JMGBlockSegue 0.2

JMGBlockSegue 0.2

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Dec 2014

Maintained by Jorge Maroto.



  • By
  • Jorge Maroto Garcia

Are you tired to write an ugly and big -prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender: method like that?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"segue1"]) {
        UIViewController *destination = segue.destinationViewController;
        destination.view.backgroundColor = [UIColor redColor];
    } else if ([segue.identifier isEqualToString:@"segue2"]) {
        UIViewController *destination = segue.destinationViewController;
        destination.view.backgroundColor = [UIColor blueColor];
    } else if ([segue.identifier isEqualToString:@"segue3"]) {
        UIViewController *destination = segue.destinationViewController;
        destination.view.backgroundColor = [UIColor greenColor];
    }
    ...
}

Check JMGBlockSegue and enjoy defining a block which will be executed to prepare segue in the same place which you call to performSegue.

Install

Use JMGBlockSegue it's really easy, you only need to drop JMGBlockSegue folder to your project, or if you are a CocoaPods-lover, you can include this line in your Podfile as usual:

pod 'JMGBlockSegue'

After that, you need to import UIViewController+BlockSegue.h on each view controller where you want to configure segues.

Use

JMGBlockSegue can be used in two ways: inline (when you performSegue programatically) or independently (in other line).

Inline

Perform segue and configure the block which is executed in the same sentence.

[self performSegueWithIdentifier:@"segueIdentifier" sender:nil withBlock:^(id sender, id destinationVC) {
    NSLog(@"Segue configured inline");
    destinationVC.user = tmpUser;
}];

Independently

Configure segue block independently of his execution, this way could be called on viewDidLoad for example, and it's run with both the call performSegueWithIdentifier:sender: method and storyboard segue perform.

[self configureSegue:@"segueIdentifier" withBlock:^(id sender, id destinationVC) {
    NSLog(@"I'm a block fired with the segue!");
}];

Testing

I added some tests as personal exercise, but if you want run them, exec script (it uses xcpretty by supermarin):

./run_tests.sh

Acknowledges

Author

License

JMGBlockSegue is available under the MIT license. See the LICENSE file for more info.