【问题标题】:Passing data from a View to another view inside a tabcontroller将数据从视图传递到选项卡控制器内的另一个视图
【发布时间】:2011-12-23 03:14:30
【问题描述】:

我在将数据从视图传递到与选项卡控制器有关系的另一个视图时遇到问题。我让它从一个视图工作到另一个视图...

如果我将主视图的转场直接设置为第二视图,它就可以工作!但是,如果我将 segue 设置为转到选项卡栏控制器(它将调用 secondView),它不会...

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender(id)sender {
 secondView *secView = [segue destinationViewController]
 secView.ext = @".com";
}

如果我不得不猜测我会说destinationViewController 是问题.. 因为目标视图控制器是标签栏控制器而不是第二个视图

【问题讨论】:

  • 如果您 1) 遵循通常的 Objective-C 命名约定并以大写字母开头命名您的类,并且 2) 为您的类命名不要误导。 secondView 在经验丰富的 Obj-C 程序员看来,就像一个指向 UIView 实例的变量,而不是从 UIViewController 派生的类。 SecondViewController 会比 secondView 好得多。作为回报,您将更有可能获得更多更好的答案。
  • 传递数据可以通过delegatesnotification,甚至使用常见的model,你有哪一个打算使用?

标签: ios objective-c storyboard


【解决方案1】:

看看你写了什么,看看你的代码——你基本上已经回答了你自己的问题。您已将 segue 连接到 secondView 实例以外的其他对象。然后,您获得 segue 的 destinationViewController(您知道它是一个选项卡控制器)并将其视为 secondView

你没有说它是如何失败的,但如果你收到一个错误,即 UITabBarController 没有-setExt: 方法,我不会感到惊讶。

【讨论】:

  • 我可以t get it to work tho... I was essential asking for some help on how to solve it.. if i link the segue directly to the secondView, the tab controller wont 加载!
【解决方案2】:

你可以做两件事:

  1. 创建一个Tab Bar Controller类,在其中添加一个属性,在prepareForSegue中为其赋值,然后在secondView.m中使用[self.tabBarController]访问它,或者

  2. 将您的 secondView *secView = [segue destinationViewController] 行更改为:

    secondView *secView =  [[[segue destinationViewController] viewControllers] objectAtIndex:0]
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多