Xcode Обновление таблицы из другого метода - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть файл code_tab.m, который имеет дело с UI и файлом code.m, который обрабатывает данные, а также обновляет MutableArray. Когда code.m обновляет массив, я хочу обновить таблицу в представлении, связанном с connection_tab.m. У меня есть функция в code_tab.m, которая имеет:

[self.table tableupdate]

Который работает как положено, когда вызывается внутри. Когда та же функция вызывается из файла code.m (когда массив был обновлен), ничего не происходит, хотя я вижу, что к тому же коду обращаются.

У меня есть доступ к настройке при наличии этой строки в файле code.h:

    connection_tab* connectiontab_script;

, а затем вызвать его в code.m с

 connectiontab_script = [[connection_tab alloc] init];
[connectiontab_script tableupdate];

Я явно пропустил что-то жизненно важное. Есть ли способ, которым один метод может изменить визуальное отображение другого, в этом случае обновить таблицу уже на экране?

1 Ответ

0 голосов
/ 01 марта 2012

Технически вам следует избегать того, чтобы ваш класс данных совершал вызовы методов в вашем представлении , поскольку в будущем это может вызвать головную боль, MVC - рекомендуемая практика разработки.

Однако вы можете добиться того, что пытаетесь сделать, изменив свой метод initNetworkCommunication в code, чтобы передать ссылку на активное представление через:

- (void) initNetworkCommunicationForView:(UIViewController*)passedVC

Которому вы звоните изнутри connection_tab как:

[appDelegate.connection_script initNetworkCommunicationForView:self];

Тогда в code вы бы сделали (если оператор избегает предупреждений):

if ([passedVC respondsToSelector:@selector(tableupdate)]) {
    [passedVC performSelector:@selector(tableupdate)];
}

В зависимости от структуры вашего code класса вам может потребоваться создать общеклассовую переменную для хранения пройденного VC, если вызов tableupdate не находится в пределах initNetworkCommunication.

P.S. Вы также можете настроить метод так, чтобы он был специфичен для вашего connection_tab класса, например:

- (void) initNetworkCommunicationForView:(connection_tab*)passedCT

Тогда вы можете отказаться от выбора и перейти к:

[passedCT tableupdate];

Но я пошел с UIViewController по соображениям совместимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...