关于iOS设置代理问题

发布于 2022-08-29 17:31:31 字数 435 浏览 14 评论 0

-(void)prepareForSegue:(UIStoryboardSegue )segue sender:(id)sender{ if([segue.identifier isEqualToString:@"AddItem"]){
//1
UINavigationController *navigationController = segue.destinationViewController;
//2
AddItemViewController *controller = (AddItemViewController
) navigationController.topViewController;
//3
controller.delegate = self; }
}

能解释上面的的代码吗?1,2,3分别有什么作用?另外这个方法在什么情况下使用

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一曲爱恨情仇 2022-09-05 17:31:31

Segue是页面转换/过渡的定义, 比如说,你在storyboard里定义了一个segue(可以是点某个button或者选中table中的cell之类的action来触发),它的identifier被设置成AddItem, 那么在这个页面转换要发生的时候就会调用prepareForSegue:sender:方法。它的主要作用是,你可以在这个方法里给即将要显示的viewcontroller设置数据。

1:一个segue会牵扯到两个viewcontroller(当前的以及接下来要去的), 1这里的代码就是获得接下来要去的viewcontroller(目的地), 例子里目的地是一个navigation controller。
2:Navigation controller是一种controller容器, 它的topViewController属性保存的是从名字就能看出来的,最前面的controller。
3: 把addItemViewController的delegate设置成当前的viewcontroller,委托(delegate)是在ios的开发中很常见的一种模式。建议你可以看一下比如UITableView的delegate,datasource的api之类的, 都是类似的。

storyboard,segue的介绍:http://www.cocoachina.com/applenews/devnews/2014/0630/8983.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文