簡體   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