advantis
11/14/2012 - 4:34 PM

Random thoughts on storyboard segues

Random thoughts on storyboard segues

// Thought #1
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
    [self performSelector:NSSelectorFromString(segue.identifier) 
               withObject:segue.destinationViewController];
    #pragma clang diagnostic pop
}

// Thought #2
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    typedef void(^SegueAction)(id destination);

    NSDictionary *mapping = @{
        @"addAlarm" : ^(UINavigationController *navigator) {
            [navigator.viewControllers[0] setAlarm:[HDAlarm new]];
        },
        @"editAlarm" : ^(AlarmEditViewController *editor) {
            editor.alarm = [_dataController objectAtIndexPath:self.tableView.indexPathForSelectedRow];
        }
    };

    SegueAction action = mapping[segue.identifier];
    action(segue.destinationViewController);
}