通过包含视图控制器传递数据的好方法是什么

时间:2015-05-15 06:40:53

标签: ios objective-c swift uistoryboard

Example

我正在尝试将对象的实例从“初始”视图控制器传递到“item1”和“item2”。我想避免继承UITabBarController,因为它会使包含视图控制器知道“太多”。

除了子类化UITabBarController之外,使用故事板或代码还有什么好方法吗?

2 个答案:

答案 0 :(得分:1)

  

我想避免继承UITabBarController,因为它会使包含视图控制器知道“太多”。

您应该是子类,并且您的子类应该为此目的实现特定协议。 Yhen,包含VC只知道该协议,它是合适的,因为它有直接的责任。

答案 1 :(得分:1)

  

我试图从“初始”视图控制器传递对象的实例   到“item1”和“item2”。我想避免继承   UITabBarController因为它会使包容视图控制器知道   “太多了”。

此处的问题是您的segue destinationViewControllerUITabBarController而不是第1项第2项。如果您不想将它子类化,这会使您的情况变得非常困难,因为您无法直接在初始VC 的实例与这两个项目之间进行通信。

我的建议确实是子类,这是在这种情况下正确的方法(你可能想要添加一个指定通信接口的协议)。

其他选项包括:

  1. 以某种方式让初始视图控制器访问第1项第2项的实例(由于故事板不能,您必须在代码中执行大量此设置t让你有能力在IB中完成所有这些工作。
  2. 使用NSNotification并将实例作为userInfo传递(不是非常优雅,但可能是您最快的解决方案)
  3. 存储要在NSUserDefaults中传递的实例的序列化版本,并将其加载到第1项第2项中(可能会产生大量开销) )