2009-05-17 2 views
1

У меня есть UITableView, который заполняется массивом, у меня есть кнопка на панели навигации, которая (при нажатии) добавляет элемент в массив и вызывает [self.tableView reloadData] в UITableView. Это приводит к тому, что numberOfRowsInSection вызывается и возвращает правильное количество строк (количество элементов в массиве), но не вызывает cellForRowAtIndexPath. Я создал новое приложение на основе навигации, чтобы попытаться найти решение, но имеет точно такую ​​же проблему! Если кто-то знает ответ, мы будем очень благодарны, я разорвал то, что осталось от моих волос за последний день! Я поставил источник для тестового проекта на моем сайте по адресу www.sofaracing.com/Downloads/Test3.zipПроблема перезагрузки UITableView

+0

Я должен добавить, что если я вывожу модальный вид перед таблицей, обновите массив и вызовите reloadData, а затем удалите модальный вид, тогда он будет работать отлично! Почему я не могу получить это поведение, когда вид таблицы видна? – 2009-05-17 11:12:42

ответ

2

Работы для меня! ;)

В MainWindow.xib вы добавили объект Root View Controller (это не часть контроллера навигации) - удалите его, не обязательно. Затем подключите выход refreshFriendsList к кнопке панели NavigationItem RootViewController. Wha-la, волшебство!

ОТВЕТ: Вам может потребоваться очистить предупреждение. И вы можете подумать о создании класса для своей модели данных, а не для использования UIApplication sharedApplication.

+0

Хорошо, я удалил RootViewController из NavigationController в MainWindow.xib, но я не понимаю, как подключить кнопку панели к IBAction без этого ...? – 2009-05-17 12:40:20

+0

Игнорировать мой комментарий, я понял! Спасибо большое! – 2009-05-17 12:42:06

1

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

Если вы инициализируете исходный массив элементом, корректно вызывается cellForRowAtIndexPath. Если вы исследуете экземпляр self.tableView в этом вызове, а затем в последующих вызовах refreshFriendsList, self.tableView указывает на другой экземпляр.

2009-05-17 14:33:07.591 Test3[33580:20b] cellForRowAtIndexPath 0 
2009-05-17 14:33:07.594 Test3[33580:20b] self.tableView: <UITableView: 0x52b9b0> 
2009-05-17 14:42:36.810 Test3[33762:20b] numberOfRowsInSection: tableView <UITableView: 0x53bcd0> 
Смежные вопросы