Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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_Uiviewcontroller - Fatal编程技术网

Ios 如何从容器/父视图控制器和多个子视图控制器共享数据数组

Ios 如何从容器/父视图控制器和多个子视图控制器共享数据数组,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,我有一个场景,其中有一个父容器视图控制器,子视图占据了大部分屏幕。此子视图用于交换相同数据的3个不同视图(地图、表格和图库)。有一个分段控件,用于选择用户要查看的数据视图。我在父容器视图控制器中有一个模型类型的数组集合,我希望这3个不同的子视图控制器在各自的视图中显示此数据。是否有任何干净的方法可以做到这一点,而不必重复数据4次(在父级中重复一次,在子级中重复3次)?我假设我必须复制数据,因为子视图控制器不能调用父视图控制器来访问其数组。这也不是一种合适的继承情况,因为父对象更像是一个容器,而不

我有一个场景,其中有一个父容器视图控制器,子视图占据了大部分屏幕。此子视图用于交换相同数据的3个不同视图(地图、表格和图库)。有一个分段控件,用于选择用户要查看的数据视图。我在父容器视图控制器中有一个模型类型的数组集合,我希望这3个不同的子视图控制器在各自的视图中显示此数据。是否有任何干净的方法可以做到这一点,而不必重复数据4次(在父级中重复一次,在子级中重复3次)?我假设我必须复制数据,因为子视图控制器不能调用父视图控制器来访问其数组。这也不是一种合适的继承情况,因为父对象更像是一个容器,而不是同一类型的视图控制器。这也不是一种委托情况,因为孩子们不需要通知家长任何事情,而是反过来

非常感谢您的建议

谢谢。

我将创建一个类(下面是MyDataController)来管理数据,并使用共享实例从我应用程序中的任何位置访问数据

接口(MyDataController.h)

实现(MyDataController.m)

最后,要从任何位置访问此静态对象:

MyDataController *dataController = [MyDataController sharedDataController]; // this will create or return the existing controller;
我将创建一个类(下面是MyDataController)来管理数据,并使用一个共享实例从我应用程序中的任何位置访问数据

接口(MyDataController.h)

实现(MyDataController.m)

最后,要从任何位置访问此静态对象:

MyDataController *dataController = [MyDataController sharedDataController]; // this will create or return the existing controller;

您可以将数据放在一个单例类中,然后让您的每个子视图控制器从单例中获取数据。

您可以将数据放在一个单例类中,然后让您的每个子视图控制器从单例中获取数据。

嗯,您必须以某种方式将其获取到那里。。。是否在每个子视图上创建属性?使用类似于UITableView的数据源模式?好吧,您必须以某种方式将其放到那里。。。是否在每个子视图上创建属性?使用类似于UITableView的数据源模式?谢谢,这是我想我将要做的-在你之前的人给出的类似答案。谢谢,这是我想我将要做的-在你之前的人给出的类似答案。
MyDataController *dataController = [MyDataController sharedDataController]; // this will create or return the existing controller;