首先,我是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并且不关心第二个?
答案 0 :(得分:1)
问题出在这一行:
ThirdViewController *svc = [self.tabBarController.viewControllers objectAtIndex:1];
[self.tabBarController.viewControllers objectAtIndex:1]将不会返回ThirdViewController的实例,因为您尚未在标签栏中添加它。您刚刚通过模态segue将ThirdViewController与FirstViewController连接起来。
你需要做的是创建一个ThirdViewController实例,然后设置它的委托,然后以模态方式呈现它。