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

时间:2018-03-20 22:35:41

标签: ios objective-c uitableview

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

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

此外,这是一种情况,我会将其中一个表视图作为另一个的子类吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

首先,您应该创建一个包含该可变数组的单例类,以便您可以在任何地方编辑/访问它,每当您更新该数组时重新加载可见的tableView,如果另一个tableView也可见,则重新加载它(使用delegate,observer, notificationCenter),否则当你打开包含它的VC时,它会在最后一次编辑时更新,你也可以利用viewDidAppear重新加载其中的表作为另一个选择而不是代表,如果它是&#39;是你的应用程序的逻辑

// .h

#import <Foundation/Foundation.h>

@interface GlobalData : NSObject

@property(nonatomic,retain)NSMutableArray*masterArray;

+(GlobalData*)shared;

@end

// .m

#import "GlobalData.h"

@implementation GlobalData 

static GlobalData *instance = nil;

+(GlobalData *)shared
{
    @synchronized(self)
    {
        if(instance==nil)
        {
            instance = [GlobalData new];

            instance.masterArray = [NSMutableArray new];
        }
    }
    return instance;
}


@end

<强>用法

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