UIViewController总结

来源:互联网 发布:淘宝新店多久有流量 编辑:程序博客网 时间:2024/05/21 06:48

得到对应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")]

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];

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];

将某个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勾选上










0 0
原创粉丝点击