将数据从UIViewController传递给带有委托的UITabBarController?
首先,我是一个object-c的初学者,我正在研究它。将数据从UIViewController传递给带有委托的UITabBarController?
我想创建一个简单的应用程序,只是为了学习的委托作为一个人建议我在另一个topic。
局势: - 故事板; - UITabBarController; - UIViewController。
该应用程序必须从标签栏控制器(FirstViewController和SecondViewController),从FirstViewController我想要去ViewController(ThirdViewController),并在那里我有一个滑块和后退按钮。 我试图使用委托将滑块的内容从ThirdViewController传递给FirstViewController。
当运行该应用程序,启动画面后,它崩溃和我有回下面的消息:
2013年2月5日19:16:08.382 PassDataBetweenTabsUsingDelegate [3761:C07] - [SecondViewController无法识别的选择器发送到实例0x74c4ed0 2013-02-05 19:16:08.384 PassDataBetweenTabsUsingDelegate [3761:c07] ***终止应用程序由于 未捕获异常'NSInvalidArgumentException',原因: ' - [SecondViewController setDelegate: ]:无法识别的选择器发送到 实例0x74c4ed0'
这里也是entire project code,它的速度更快的是复制/粘贴代码的一部分。
我做错了与委托或我不知道的方式告诉给ThirdViewcontroller它有去第一,不关心二?
的问题是在这条线:
ThirdViewController *svc = [self.tabBarController.viewControllers objectAtIndex:1];
[self.tabBarController.viewControllers objectAtIndex:1]因为你还没有在标签栏添加它不会返回ThirdViewController的实例。您刚刚通过模态segue将ThirdViewController与FirstViewController连接起来。
你需要做的是创建ThirdViewController的一个实例,然后设置它的委托,然后以模态方式呈现它。
谢谢你的答案,我会尝试。 – Mark
您可以在故事板中添加ThirdViewController的故事板ID(在身份检查器中)。然后在你的FirstViewController中使用“ThirdViewController * tvc = [self.storyboard instantiateViewControllerWithIdentifier:@”Third“];” ,然后添加委托:“tvc.delegate = self”,最后使用“[present presentViewController:animated:completion:]”方法呈现它。得到它了? –
谢谢,你。与此同时呢。 非常感谢您的解释。 – Mark
请仔细阅读本:http://www.theappcodeblog.com/2011/04/15/passing-data-between-views-tutorial-using-a-protocol-delegate-in-your-iphone-app/(你的错误是你的第二个视图控制器没有它的委托属性,但你真的应该从一些教程开始) –