【问题标题】:Pass data from a UIViewController to UITabBarController with delegate?使用委托将数据从 UIViewController 传递到 UITabBarController?
【发布时间】:2013-01-20 19:42:03
【问题描述】:

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

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

情况: - 故事板; -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'

这里也是entire project code,复制粘贴部分代码比较快。

我是否对委托做错了,或者我不知道如何告诉 ThirdViewcontroller 它必须转到第一个而不关心第二个?

【问题讨论】:

标签: ios uiviewcontroller delegates uitabbarcontroller


【解决方案1】:

问题出在这一行:

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

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

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

【讨论】:

  • 谢谢你的回答,我试试看。
  • 您可以在情节提要中添加您的 ThirdViewController 的情节提要 ID(在身份检查器中)。然后在您的 FirstViewController 中使用 "ThirdViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"Third"];" ,然后添加委托:“tvc.delegate = self”,最后使用“[self presentViewController:animated:completion:]”方法呈现它。明白了吗?
  • 谢谢,谢谢。期间做了。非常感谢您的解释。
猜你喜欢
  • 2013-03-08
  • 2018-07-14
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2018-04-18
相关资源
最近更新 更多