Быстрый доступ и обновление таблицы в представлении контейнера

Это немного запутанно, но я сделаю все возможное, чтобы объяснить. У меня есть контроллер представления с представлением контейнера. В представлении контейнера представлено табличное представление. Я хочу обновить табличное представление с основного контроллера представления. Например, табличное представление будет содержать список имен. Когда пользователь вводит имя в текстовое поле, табличное представление будет обновляться, чтобы найти имена, соответствующие тому, что ввел пользователь.

Главный вопрос:

Как я могу обновить представление таблицы с основного контроллера представления?

Примечание. Я не могу использовать подготовку к переходу, поскольку данные будут меняться.


person user3783946    schedule 15.07.2015    source источник
comment
Если цель контроллера основного представления состоит только в том, чтобы удерживать текстовое поле, чтобы обеспечить функцию поиска, вы можете вместо этого рассмотреть возможность использования UISearchBar и UISearchController.   -  person pbasdf    schedule 16.07.2015


Ответы (2)


Я понял...

Я могу получить доступ к представлению через childviewcontrollers. Вот код, который я использовал:

    let childView = self.childViewControllers.last as! ViewController
    childView.List = self.nameList
    childView.tableView.reloadData()
person user3783946    schedule 16.07.2015
comment
Вы также можете сделать то же самое из дочернего представления. Вместо этого используйте parentviewcontroller. - person user3783946; 16.07.2015
comment
куда я должен положить эти коды? в контроллере родительского представления или контроллере дочернего представления? - person May Phyu; 08.05.2017

На самом деле это вопрос для начинающих, и я был бы рад помочь. Вам нужно найти место для хранения ваших данных, а затем вы можете получить к ним доступ в зависимости от ваших потребностей. Это то, что мы обычно называем моделью.

Вы можете воспользоваться одним из вариантов дизайна: общий экземпляр. Он будет существовать в течение жизненного цикла приложения. См. следующий пример.

У вас может быть такой класс модели:

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

Используя это, вы можете получить доступ к своим данным через контроллер основного представления или контроллер представления представления.

person Lucas Huang    schedule 15.07.2015