2009-05-31 4 views
5

Я реализую приложение менеджера заметок, которое имеет tableView в tabBar, где отображается основная информация его заметок. При доступе к одной заметке вы можете редактировать ее свойства. В одной кнопке tabBar вы можете выбрать способ отображения заметок в tableView.iPhone Dev: перезагрузите данные табличного представления с дочернего контроллера и другого контроллера в TabBar

Проблема заключается в том, что я не знаю, как перезагрузить данные из дочернего контроллера или из другого контроллера tabBar. Я не знаю, как обращаться к tableView из них, поэтому я могу использовать reloadData для обновления информации TableView от них.

Я совершенно новый в развитии iPhone ... любая помощь будет действительно оценена.

ответ

2

шаблон MVC поможет здесь,

до тех пор, как вы постоянно обновлять модель с информацией, которая необходима и контроллеры обновляемой от этого модального. Когда вы переключаетесь между видами, вы автоматически обновляете представления.

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

[tableviewController.tableview reloadData]; 

- как вы получаете доступ к сообщению данных перезагрузки.

+2

Спасибо, Я знаю о reloadData, и я могу использовать его в файле, где есть методы tableView, но я не знаю, как получить доступ к tableViewController в дочерних контроллерах или других контроллерах в tabBar. – 2009-05-31 16:48:21

+0

За исключением того, что это не работает из других ViewControllers ... –

4

Поместите свой код обновления таблицы в viewWillAppear: вместо viewDidLoad - таким образом, каждый раз, когда вы возвращаетесь к родительскому контроллеру из дочернего контроллера, данные получают перезагрузку.

+0

Спасибо, но функция viewWillAppear не вызывается в моем коде ... знаете ли вы, почему это могло случиться? Могу ли я просто сделать [self.tableView reloaData] внутри этой функции, чтобы решить мою проблему? – 2009-05-31 16:57:55

+0

Да, это должно помочь. Помните, что viewWillAppear определяется как - (Недействительными) viewWillAppear: (BOOL) анимированные не только - (Недействительными) viewWillAppear –

+0

Он работает, спасибо очень много. Единственное, что сейчас не так, так это то, что когда я возвращаюсь из дочерних контроллеров, строка остается выбранной, если я не выбираю другую. Он остается выбранным, даже если я нажму кнопку раскрытия другой строки, и я вернусь к представлению таблицы. Странно ... любая идея о том, как это решить ?, спасибо. – 2009-06-01 14:50:28

8

Вы должны попробовать NSNotificationCenter.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"doSomethingNotification" object:nil]; 

[[NSNotificationCenter defaultCenter] postNotificationName:@"doSomethingNotification" object:nil]; 
0

Я пришел к той же проблеме, имея дело с прототипом ячейки. Странно, я был совершенно уверен, что все сделал правильно.

Тогда я начал думать, если что-то не так с XCode. Поэтому я очистил все, перезапустил XCode, и он все еще жаловался.

Наконец, я попытался внести изменения в мои последние изменения в доске объявлений, в которой добавлен класс tableviewcell и подключен ко всем моим элементам управления ui. Наконец он прекратил жаловаться.

Я не думаю, что эта ошибка вызвана вашим кодом или чем-то еще, я пришел к нескольким странным ошибкам в iOS 5. Правильно, он все еще тестируется и имеет множество ошибок.

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

OK Удачи.

Смежные вопросы