Обновление родительской таблицы после дочернего обновления в uinvaigationcontroller - PullRequest
0 голосов
/ 14 июня 2010

Итак, у вас есть UINavigationController, с родительской таблицей, которая имеет одну ячейку

---------------
|  paul     > |
---------------

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

---------------
| name: paul  |
---------------
| age: 23     |
---------------
| hair: brown |
---------------
| etc         |
---------------

---------------
| save button |
---------------

Когдавы меняете имя на Steve и нажимаете кнопку Save (которая открывается), как получить начальную таблицу для обновления?Я использую NSUserdefaults для сохранения и загрузки из.Когда я выскакиваю в начальный вид, имя не меняется.... Однако, если я перезапущу приложение, то оно там.

Не удается определить, как обновить первую таблицу во время работы приложения.

1 Ответ

2 голосов
/ 14 июня 2010

Вы можете реализовать шаблон делегата или отправить NSNotification.Для этого я думаю, что объем кода примерно одинаков, но так как это один viewController, взаимодействующий друг с другом, вы должны идти с делегатом.

Когда вы создаете экземпляр (я предполагаю, что вы представляете modalViewController так, как вы его описываете) новый UIViewController, который нужно выдвинуть, вы устанавливаете делегат childViewController в self (self является родительским viewController).Затем вы реализуете метод в родительском элементе, который находится в протоколе делегата.Т.е. - (void) dataChanged: (NSString *) newData.Эти методы должны обновить таблицу:

- (void) dataChanged:(NSString*) newData {

    [self.tableView reloadData];
}

Когда данные изменяются в push-контроллере viewController, он вызывает [self.delegate dataChanged:newData];

Это шаблон Apple, используемый для их компонентов, так что если ятолько что написанное не имеет смысла, попробуйте поискать «шаблон делегата», и вы скоро вернетесь в нужное русло:)

...