cs193p – Assignment #5 Task #2

Please note, this blog entry is from a previous course. You might want to check out the current one.

The user-interface should always be giving some indication (e.g. a UIActivityIndicatorView) to the user when the currently displaying user-interface is going to show something when some active thread finishes. The network activity indicator in the status bar is not sufficient for this, but your application should also turn on the networkActivityIndicator whenever it is accessing the network (and only then).

The table view will use the refresh-control feature in the following thus – there is no need to put an extra activity indicator there for now.

Change in both storyboards the background of the scroll views to black (which is a cosmetic change only) … the rest will be done in code to avoid having to duplicate everything for both storyboards.
Continue reading “cs193p – Assignment #5 Task #2”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

cs193p – Assignment #5 Task #1

Please note, this blog entry is from a previous course. You might want to check out the current one.

Your application must implement all the required tasks from the last assignment (and all the required tasks in this assignment) without doing any Flickr fetching or file system interactions in the main thread. Your user-interface should be responsive to the user at all times (i.e. the main thread should never be blocked).

Flickr is accessed twice. First when the data is loaded to populate the first table. Create a new dispatch queue and load the photos there. As soon is this is done return to the main queue and set the photos property:

- (void)viewDidLoad
{
    [super viewDidLoad];    
    dispatch_queue_t queue = dispatch_queue_create("Flickr Downloader", NULL);
    dispatch_async(queue, ^{
        NSArray *photos = [FlickrFetcher stanfordPhotos];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.photos = photos;
        });
    });
}

Continue reading “cs193p – Assignment #5 Task #1”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

cs193p – Lecture #11 – Multithreading and Persistence

Please note, this blog entry is from a previous course. You might want to check out the current one.

Lecture #11 continues with multi threading and provides more insight into Grand Central Dispatch. It shows how to use refresh control, activity indicators and the network activity indicator. … incorporating all of that in Shutterbug …

The second half of the lecture addresses persistence, using archiving, SQLite and/or the file system.

The code of the demo is available at Stanford and on github.

Slides are available on iTunes …..

The lecture is available at iTunes and is named “11. Multithreading and Persistence (February 12, 2013)”.

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

cs193p – Assignment #4 Extra Task #2

Please note, this blog entry is from a previous course. You might want to check out the current one.

Make your application work on the iPad as well with appropriate user-interface idioms on that platform. This will require you to have absorbed the lecture immediately after this was assigned. But you’ll be asked to do this next week anyway, so you’ll be ahead of the game if you do it this week (and get a little bit of extra credit for doing it early).

In the iPad storyboard remove the default controller. Drag out a new split-view controller. Remove the default master and detail views. Go to the iPhone storyboard copy every thing and paste it to the Pad storyboard. Set the tab-view controller to be the master view controller. Remove the segues pointing to the image view controller and set the image view as detail view controller:

cs193p - assignment #4 extra task #2
cs193p – assignment #4 extra task #2

Continue reading “cs193p – Assignment #4 Extra Task #2”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

cs193p – Lecture #10 – iPad and Blocks

Please note, this blog entry is from a previous course. You might want to check out the current one.

Lecture #10 introduces tool bars, pop overs and split views (which are demonstrated adjusting Shutterbug for the iPad) and finishes with blocks and multi threading including the new (iOS6) refresh-control feature.

The code of the demo is available at Stanford and on github.

Slides are available on iTunes …..

The lecture is available at iTunes and is named “10. iPad and Blocks (February 7, 2013)”.

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

cs193p – Assignment #4 Extra Task #1

Please note, this blog entry is from a previous course. You might want to check out the current one.

Show your lists sorted alphabetically. There are two methods that might be helpful in this: sortedArrayUsingSelector: and sortedArrayUsingDescriptors:. The former is good when you have an array of NSString objects. The latter is good when you have an array of NSDictionary objects (and you want to sort by one of the values in the dictionaries).

… actually use both! The first one to sort the tags:

- (NSString *)tagForRow:(NSUInteger)row
{
    return [[self.photosByTag allKeys] sortedArrayUsingSelector:@selector(compare:)][row];
}

The second one to sort the photos by name:

- (void)setPhotos:(NSArray *)photos
{
    _photos = [photos sortedArrayUsingDescriptors:@[[[NSSortDescriptor alloc] initWithKey:FLICKR_PHOTO_TITLE ascending:YES]]];
    [self.tableView reloadData];
}

The complete code is available on github.

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

cs193p – Assignment #4 Task #9 & #10

Please note, this blog entry is from a previous course. You might want to check out the current one.

Since all the lists you display allow further navigation, they should display a disclosure indicator in every cell (Xcode will automatically add this for you when you create a segue from a table view cell).

… if you would like to adjust it yourself you could do so in storyboard using the inspector to set the accessory to disclosure indicator, or set it in code:

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

This application must work properly in both portrait and landscape modes on the iPhone 4 and iPhone 5. It is extra credit to also do the iPad, but the iPhone version is required.

… it does 😉

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail