-1

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

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

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

该应用程序必须从选项卡栏控制器(FirstViewController 和 SecondViewController)开始,从 FirstViewController 我想转到 ViewController(ThirdViewController),那里有一个滑块和一个后退按钮。我尝试使用委托将滑块的内容从 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”

这里也是整个项目代码,复制/粘贴部分代码更快。

我对代表做错了吗,或者我不知道如何告诉 ThirdViewcontroller 它必须去第一个而不关心第二个?

4

1 回答 1

1

问题出在这一行:

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

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

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

于 2013-02-05T19:20:50.343 回答