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

Ios 在两个表视图之间共享数据

Ios 在两个表视图之间共享数据,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有两个表视图,其中包含一个可变的对象数组,用户可以使用各种属性实例化这些对象。该类及其属性位于表视图访问的单独的.h和.m文件中 我希望这两个表视图看起来相同,以便当用户在一个表视图中添加、删除或移动对象时,第二个表视图会立即更新。我知道他们将共享一个可变数组,但我不确定将它放在哪里,以便一个表视图中的更改在另一个表视图中发生 此外,在这种情况下,我是否会使其中一个表视图成为另一个表视图的子类?首先,您应该创建一个包含该可变数组的单例类,以便您可以在任何地方编辑/访问它,无论何时更新该数组都可

我有两个表视图,其中包含一个可变的对象数组,用户可以使用各种属性实例化这些对象。该类及其属性位于表视图访问的单独的
.h
.m
文件中

我希望这两个表视图看起来相同,以便当用户在一个表视图中添加、删除或移动对象时,第二个表视图会立即更新。我知道他们将共享一个可变数组,但我不确定将它放在哪里,以便一个表视图中的更改在另一个表视图中发生


此外,在这种情况下,我是否会使其中一个表视图成为另一个表视图的子类?

首先,您应该创建一个包含该可变数组的单例类,以便您可以在任何地方编辑/访问它,无论何时更新该数组都可以重新加载可见的表视图,如果另一个表视图也可见,请重新加载它(可以使用委托、观察者、通知中心),否则当您打开包含它的VC时,它将使用最后一次编辑进行更新,您还可以使用
viewDidAppear
将表重新加载到其中,作为另一个选项,而不是委托(如果这是应用程序的逻辑)

/.h

#import <Foundation/Foundation.h>

@interface GlobalData : NSObject

@property(nonatomic,retain)NSMutableArray*masterArray;

+(GlobalData*)shared;

@end
用法

  [GlobalData.shared.masterArray addObject:"strData"];

假设有一个控制器拥有
NSMutableArray
对象和两个表视图

  • 使用
    KVO
    功能,让两个表视图保留
    strong
    作为属性的
    NSMutableArray
    对象
  • NSMutableArray
    对象的所有者创建一个新的委托数组属性,如
    NSArray*delegates
    ,在两个表视图类中实现
    MyArrayNotifier
    协议,将表对象添加到
    delegates
    数组中。现在,您可以在收到焦点消息时收到通知

不,子类化在这里没有帮助。您只需要编写一些代码,以便在对数据源进行更改时,能够在另一个tableview中反映该更改。您可以使用委派模式或观察员模式,使用
通知
作为您的数据模型。感谢您的回复。我想我理解了。我已经尝试导入了在我的项目中,通过创建一个singleton类,我将调用
singleton
。在
singleton.h
中,我有一个
@属性(非原子)NSMutableArray*masterArray;
。我知道如何导入表视图文件中的类,但现在我不确定如何实现。我想我需要从类中实例化一个对象:
Singleton*object=[[Singleton alloc]init]
然后通过这种方式访问
masterArray
属性?就像
对象。masterArray
。但是我如何使该对象在两个表视图之间保持更新和同步?示例代码很有帮助。单例的执行方式与我想象的稍有不同,谢谢!向下投票这是因为单例不会聚焦相同的键。
  [GlobalData.shared.masterArray addObject:"strData"];