繁体   English   中英

在容器视图中快速访问和更新tableview

[英]Swift accessing and updating tableview in container view

这有点令人困惑,但我会尽力解释。 我有一个带有容器视图的视图控制器。 在容器视图中是表格视图。 我想从主视图控制器更新tableview。 例如,表视图将包含名称列表。 当用户在文本字段中输入名称时,表视图将更新以查找与用户输入内容匹配的名称。

主要问题是:

如何从主视图控制器更新表视图?

注意:由于数据会发生变化,因此我无法使用“准备进行隔离”。

我想到了...

我可以通过childviewcontrollers访问该视图。 这是我使用的代码:

    let childView = self.childViewControllers.last as! ViewController
    childView.List = self.nameList
    childView.tableView.reloadData()

这实际上是一个初学者的问题,我很乐意提供帮助。 您需要找到一个存储数据的地方,然后可以根据需要访问它。 那就是我们通常所说的模型。

您可以利用设计模式之一:共享实例。 它会在应用程序生命周期中存在。 请参见以下示例。

您可以有一个这样的模型类:

// .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

使用此功能,您可以通过主视图控制器或当前视图控制器访问数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM