1. 得到对应 UIViewController 对象的几种方法

1. 通过 UIViewController 的 Storyboard ID 得到对应的 UIViewController

CustomViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"myViewController"];

2. 通过 xib 文件 (CustomViewController.xib) 得到对应的 UIViewController 对象

CustomViewController *controller = [[CustomViewController alloc]initWithNibName:@"CustomViewController" bundle:[NSBundle mainBundle]];

3. 通过 Storyboard 中的连线得到对应的 UIViewController 对象

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.destinationViewController isKindOfClass:[CustomViewController class]]) {
	CustomViewController *detailsController = (CustomViewController *)segue.destinationViewController;
    }
}
[segue.destinationViewController isKindOfClass:[CustomViewController class]] 也可以写成这样:
[segue.identifier isEqual(@"CustomViewController")]

2. UIViewController之间跳转的几种方法

1. 在 StoryBoard 中连线


通过控件(如UIButton)连线到下一个UIViewController。不用再IB中定义线的identifier,也不用在代码里写prepareForSegue方法;但通过UIViewController连线到下一个UIViewController时,必须定义线的identifier和写prepareForSegue方法。
2. 通过 push 方式到另一个 UIViewController
 
  
 
   
[self.navigationController popToViewController:self.navigationController.childViewController[0] animated:YES];[self.navigationController popToRootViewControllerAnimated:YES];
3. 通过 model 方式跳转到另一个 UIViewController
[self dismissViewControllerAnimated:YES completion:nil];

3. UIViewController 之间传值(不用 delegate 方法,delegate 方法后面介绍)

ViewController1.m
ViewController2 *controller = (ViewController2*)[segue.destinationViewController];
NSDate *date = [NSDate date];
[controller setDetailItem:date];
ViewController2.h
 
 @property(strong,nonatomic) IBOutlet UILabel testLabel;
@property(strong,nonatomic) id detailItem;
ViewController2.m
 
 self.testLabel.text = [self.detailItem description];

4. 将某个 UIViewController 设为启动界面后的第一个显示界面

在 Storyboard 中有时会不小心误把 controller 前面的小箭头删掉,这时如果运行程序会报这样的错误:Failed to instantiate the default view controller forUIMainStoryboardFile 'MainStoryboard' - perhaps the designated entry point is not set。
解决方案:
在 Storyboard 中选择一个 UIViewController - Show the Attributes inspector - View Controller - Is Initial View Controller 勾选上。