使用故事板时,使用UITabBarController在视图之间传递数据

时间:2012-03-23 12:00:17

标签: ios uistoryboard

我一直在转换应用程序以使用故事板。我确信这是一个简单的问题,但不知何故我似乎无法找出“正确”的做法,因为我们来自旧的XIB世界。

其中一个小节包含一个UITabBarController,每个都有一些子视图。

启动这组标签的动作完美无缺;我检测到segue,并在我的(自定义)UITabBarController中设置一些数据属性。

接下来,我希望能够在创建子视图时将其传递给子视图。但是 - 因为这些标签只是'关系'而不是segue',我不能做我在其他地方所做的事情,这会覆盖'prepareForSegue'功能。

在旧的XIB Universe中,我只是将一些IBOutlet绑定在选项卡控制器和子视图之间。但我不能在故事板中这样做,因为父母和孩子是独立的“场景”。

我已经尝试让我的UITabBarController类实现自己的委托,覆盖'didSelectViewController'并执行几乎工作的'self.delegate = self',除了它永远不会被调用的事实最初显示视图时的第一个选项卡。

“正确”(或“最佳”)方式是什么?请不要告诉我在应用代表上获取/设置一些值,因为这是“全局变量”领域 - 讨厌。

1 个答案:

答案 0 :(得分:1)

尝试循环遍历UITabBarController上的视图控制器,例如在这个例子中,setData方法从segue调用到UITabBarController,然后循环遍历子视图控制器,在子控制器上进行类似的调用以设置数据;

- (void)setData:(MyDataClass *)newData
{
    if (_myData != newData) {
        _myData = newData;

        // Update the view.
        [self configureView];
    }

}

- (void) configureView {
       for (UIViewController *v in self.viewControllers)
       {
           if ([v isKindOfClass:[MyDetailViewController class]])
           {
               MyDetailViewController *myViewController = v;
                    [myViewController setData:myData];
           }
       }
 }