在容器视图中快速访问和更新tableview
这有点令人困惑,但我会尽力解释。 我有一个容器视图的视图控制器。 在容器视图中是一个表视图。 我想从主视图控制器更新tableview。 例如,表格视图将包含一个名称列表。 当用户在文本字段中键入名称时,表视图将更新以查找与用户input内容相匹配的名称。
主要问题是:
如何从主视图控制器更新表视图?
注意:因为数据将会改变,所以我不能使用准备工作。
我想到了…
我可以通过childviewcontrollers访问视图。 这是我使用的代码:
let childView = self.childViewControllers.last as! ViewController childView.List = self.nameList childView.tableView.reloadData()
这实际上是一个初学者的问题,我很乐意提供帮助。 你需要find一个地方来存储你的数据,然后你可以根据你的需要来访问它。 这就是我们通常所说的模型。
您可以利用devise模式之一:共享实例。 它将在应用程序生命周期中存在。 看下面的例子。
你可以有这样的模型类:
// .h @interface DataManager : NSObject + (instancetype)sharedManager; @property (strong, nonatomic, readonly) NSMutableArray *data; @end // .m @interface DataManager : NSObject @property (strong, nonatomic, readwrite) NSMutableArray *data; @end @implementation DataManager + (instancetype) sharedManager { static DataManager *sharedInstance = nil; static dispatch_once_t dispatchOnce; dispatch_once(&dispatchOnce, ^{ sharedInstance = [[self alloc] init]; sharedInstance.data = [[NSMutableArray alloc] initWithCapacity:5]; }); return sharedInstance; } @end
使用这个,你可以通过你的主视图控制器或你的视图控制器访问你的数据。