Проблема с перезагрузкой данных UItableview с использованием представления предупреждений с подсказкой в ​​пользовательской ячейке - PullRequest
1 голос
/ 30 июня 2009

У меня есть UItableViewController с пользовательской ячейкой, созданной с использованием конструктора интерфейса. В пользовательской ячейке есть кнопка и метка. Кнопка при нажатии запускает представление предупреждения с подсказкой. Как только текст введен и нажмите ОК, метка в ячейке будет отображать обновленную информацию в таблице. Проблема в том, что ярлык не будет обновляться, пока я не нажму на одну из ячеек. Я не могу использовать [tableview reloaddata], потому что я использую IB, и он создает отдельные файлы .h и .m UItableViewCell, и именно здесь я помещаю представление предупреждений с кодом подсказки. Как я могу позвонить перезагрузить данные, чтобы обновить таблицу, когда представление предупреждения отклонено. Я поместил [tableview reloaddata] в UItableViewController под viewWillAppear, но он не работает.

Ответы [ 3 ]

0 голосов
/ 30 июня 2009

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

Я полагаю, что вы можете установить делегат для UIAlertView, а затем реализовать протокол на вашем основном UITableViewController через определение @interface. Это означает, что ваш контроллер будет уведомлен о событиях, поскольку они относятся к этому конкретному предупреждению, если вы установите свойство делегата в вашем объекте AlertView после создания экземпляра.

Взгляните на функцию ...

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

Если вы настроили вышеупомянутое делегирование, а затем перегрузили эту функцию, вы должны иметь возможность вызывать [tableview reloadData] при специальном нажатии на представление предупреждений.

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

0 голосов
/ 01 июля 2009

Я понял это. Смотрите код ниже:

UItableView *tableView = (UItableView *)self.superview;
[tableView reloadData];

self.superview это трюк!

0 голосов
/ 30 июня 2009

Вы можете сохранить ссылку на UITableViewController и вызывать reloaddata для него из ячейки.

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