Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 通过安全壳视图控制器传递数据的好方法是什么_Ios_Objective C_Swift_Uistoryboard - Fatal编程技术网

Ios 通过安全壳视图控制器传递数据的好方法是什么

Ios 通过安全壳视图控制器传递数据的好方法是什么,ios,objective-c,swift,uistoryboard,Ios,Objective C,Swift,Uistoryboard,我试图将对象实例从“初始”视图控制器传递到“item1”和“item2”。我希望避免子类化UITabBarController,因为它会使安全壳视图控制器知道“太多” 除了子类化UITabBarController之外,使用故事板或代码还有什么好的方法可以做到这一点吗 我希望避免子类化UITabBarController,因为它会使安全壳视图控制器知道“太多” 您应该创建一个子类,并且您的子类应该为此实现一个特定的协议。嗯,包含VC的人只知道这个协议,这是合适的,因为它有直接的责任 我试图从“初

我试图将对象实例从“初始”视图控制器传递到“item1”和“item2”。我希望避免子类化
UITabBarController
,因为它会使安全壳视图控制器知道“太多”

除了子类化
UITabBarController
之外,使用故事板或代码还有什么好的方法可以做到这一点吗

我希望避免子类化UITabBarController,因为它会使安全壳视图控制器知道“太多”

您应该创建一个子类,并且您的子类应该为此实现一个特定的协议。嗯,包含VC的人只知道这个协议,这是合适的,因为它有直接的责任

我试图从“初始”视图控制器传递对象的实例 至“项目1”和“项目2”。我希望避免子类化 UITabBarController,因为它将使安全壳视图控制器知道 “太多了”

这里的问题是,您的序列的
destinationViewController
UITabBarController
,而不是项目1或项目2。如果您不想将其子类化,这会使您的案例变得非常困难,因为您无法在初始VC的实例和这两个项目之间直接通信

我的建议是使用子类,在这种情况下,这是正确的方法(您可能希望添加一个指定通信接口的协议)

其他选择包括:

  • 以某种方式赋予初始视图控制器访问项1和项2实例的权限(您必须在代码中进行大量设置,因为故事板不能让您完全在IB中完成所有设置)
  • 使用
    NSNotification
    并将实例作为
    userInfo
    传递(虽然不是很优雅,但可能是isse的最快解决方案)
  • 存储要传入的实例的序列化版本
    NSUserDefaults
    ,并将其加载到项目1和项目2中(可能会有大量开销)

  • 您可以使用singleton类,在该类中保存数据,并在其他类中访问它。@YogeshSuthar,@aBilal抱歉,我所说的数据是对象的实例。因此
    NSUserDefaults
    和singleton将不起作用。我编辑了我的问题。