使用委托将数据从UIViewController传递到UITabBarController?

时间:2013-02-05 19:07:48

标签: ios uiviewcontroller delegates uitabbarcontroller

首先,我是object-c的初学者,我正在研究它。

我正在尝试创建一个简单的应用程序,只是为了学习代表,因为一个人在另一个topic建议我。

情况: - 故事板; - UITabBarController; - UIViewController。

应用程序必须从Tab Bar Controller(FirstViewController和SecondViewController)开始,从我想要转到ViewController(ThirdViewController)的FirstViewController,我有一个滑块和一个后退按钮。 我试图使用委托将滑块的内容从ThirdViewController传递给FirstViewController。

当我运行应用程序时,在启动画面之后,它崩溃了,我已经回复了这条消息:

  

2013-02-05 19:16:08.382 PassDataBetweenTabsUsingDelegate [3761:c07]    - [SecondViewController setDelegate:]:无法识别的选择器发送到实例0x74c4ed0 2013-02-05 19:16:08.384   PassDataBetweenTabsUsingDelegate [3761:c07] ***由于终止应用程序   未捕获的异常'NSInvalidArgumentException',原因:   ' - [SecondViewController setDelegate:]:发送到的无法识别的选择器   实例0x74c4ed0'

这也是entire project code,复制/粘贴部分代码的速度更快。

我是否对代理做错了或者我不知道如何告诉ThirdViewcontroller它必须转到First并且不关心第二个?

1 个答案:

答案 0 :(得分:1)

问题出在这一行:

ThirdViewController *svc = [self.tabBarController.viewControllers objectAtIndex:1];

[self.tabBarController.viewControllers objectAtIndex:1]将不会返回ThirdViewController的实例,因为您尚未在标签栏中添加它。您刚刚通过模态segue将ThirdViewController与FirstViewController连接起来。

你需要做的是创建一个ThirdViewController实例,然后设置它的委托,然后以模态方式呈现它。