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 勾选上。