У меня есть представление со столом View. У меня есть подклассы TableViewCells, чтобы сделать представление объекта моей модели. Этот пользовательский UITableViewCell имеет две кнопки для изменения моего объекта модели (он добавляет +1 к переменной экземпляра).Рекомендации по пользовательскому UITableViewCell для улавливания уведомлений UIElements
Так что я думаю о том, как я должен архитектуре все, что мои варианты:
-I поместить указатель в обычае tableViewCell, когда я получаю уведомление от одной из кнопок I шансом ячейки и объекта (мне не нравится это решение, потому что представление меняет мою модель, плохое повторное использование ячейки настолько плохо)
-Создать протокол UICustomTableViewCellDelegate
и экземпляр id<UICustomTableViewCellDelegate>
в классе ячеек. Когда я получаю сообщение от UIElement, я вызываю своего делегата. Делегат укажет на UIViewController общего представления, у которого есть массив со всеми экземплярами моих объектов, и здесь измените модель. Перед изменением вида ячейки на. Я думаю, это неплохо для повторного использования, но как я буду легко идентифицировать и восстановить свой объект из массива ViewController? Я думаю, что метод должен быть:
-(void)customTableCellViewButtonPlusPressed:(CustomTableViewCell*) cell;
-Сделать в ViewController для CustomTableViewCell со ссылкой на мой объект. Он получит сообщение из UIButtons ячейки и изменит cellView и объект модели, на который ссылаются
Что такое лучшая практика?
Мне кажется хорошим ответом. Только вопрос: у моего ViewCellController должна быть ссылка на CellView? Я говорю, что поскольку отношение по умолчанию будет объектом класса UIView, когда TableView будет запрашивать TableViewCell в своем делетете данных, этого будет достаточно, чтобы отобразить объект вида? как 'возврата (UITableViewCell *) cellViewController.view' – Jpellat
Нет, я бы persent функция cellView, что было бы, как этот [cellViewController cellView] - (UITableViewCell *) cellView { возврата (UITableViewCell *) self.view; } } таким образом, вы бы достигли лучшего инкапсуляции представления, поэтому, если вы измените реализацию cellView в будущем, ваш ViewController не будет вообще изменяться, вы просто измените реализацию функции cellView внутри CellController –
Это идеальный информация. Спасибо Мне нравится этот дизайн – Jpellat