Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

Работа с кастомными UITableViewCell и MVC - Программирование iOS/iPhone

22.04.2014, 17:40. Просмотров 618. Ответов 7
Метки нет (Все метки)

Всем привет!

У меня есть привычка при работе со своими кастомными ячейками делать так:

Допустим, есть ячейка, отображающая данные по человеку (имя, адрес, фото, рост и т.д.) и есть у меня класс Human, в котором живут эти все данные.
В ячейке я делаю свойство типа Human, переопределяю сеттер, и в этом сеттере распихиваю информацию о человеке по всем нужным View, который у меня в этой ячейке есть для вывода информации.
В методе cellForRowAtIndexPath достаточно сделать только что-то вроде этого:
Objective-C
1
2
Human *human = [humans objectAtIndex:indexPath.row];
cell.human = human;
На одном из интернет-ресурсов я недавно прочитал, что это плохой подход (человек делал похоже) и он самым страшным образом нарушает концепцию MVC. Мол, View-ячейка занимается не только собственным отображением, а и ковырянием в объекте класса Human.

Что вы скажете насчет такой реализации? Мне страшно удобно таким подходом пользоваться, но смутило упоминание об "идеологическом несоответствии".

Буду рад комментариям.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
23.04.2014, 07:23     Работа с кастомными UITableViewCell и MVC #2
kievkao, Для небольших проектов подход вполне уместен.
Чем больше проект и выше повторная применимость компонентов, то конечно же, нарушение основного шаблона проектирования в данном случае может привести к образованию множественного дублирования кода.
Затем может появится спагетти код. К примеру если кто-то сделает кнопку в ячейке, и по нажатию этой кнопки будет у вашего human голову менять.

Но если проект небольшой и по типу написал-и-забыл – это вполне удобное решение.

P.S. Лично я не люблю такой подход, а предпочитаю интерфейс делать подобный UITableViewCell.
Без инкапсуляции данных модели. Ибо повторная применимость это очень и очень хорошо.

P.P.S Есть еще подход работать на уровне интерфейсов и предоставлять не объект типа human, а объект типа id<Protocol>.
Это уже лучше. Соблюдается контракт между моделью, реализующей интерфейс и отображением, которое отрисовывает визуальное представление этого интерфейса.
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
25.04.2014, 10:00     Работа с кастомными UITableViewCell и MVC #3
Human *human = [humans objectAtIndex:indexPath.row];
cell.human = human;
Веселее когда самого Humаn нет вообще.
Вместо него просто словарь.

Objective-C
1
2
3
NSDictionary * human = [humans objectAtIndex:indexPath.row];
 
cell.title.text= human[@"name"];
кстати objectAtIndex это пережиток IOS5

так что вернее будет

Objective-C
1
2
3
NSDictionary * human = humans[indexPath.row];
 
cell.title.text= human[@"name"];
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
25.04.2014, 11:36     Работа с кастомными UITableViewCell и MVC #4
Веселее когда самого Humаn нет вообще.
Вместо него просто словарь.
noname_club, такого вообще быть не должно. Это моветон, без модели-то, и без протокола.
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
25.04.2014, 13:32     Работа с кастомными UITableViewCell и MVC #5
Это моветон, без модели-то, и без протокола.
зачем протокол и модель когда сами данные не сложны.
Достаточно описания в Excel файлике на эти самые структуры + #define макросы названий свойств

Objective-C
1
2
3
#define k_NAME @"name"
#define k_EMAIL @"email"
// и прочее
+ так как сами данные в любом случае это словарь то они легко сохраняются в NSUserDefaults без промежуточных преобразователей.

Опять же это все применимо если сами данные не сложны по структуре.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
25.04.2014, 14:35     Работа с кастомными UITableViewCell и MVC #6
noname_club, я даже сам не понимаю зачем я вам это сказал.
Вы со своими дефайнами уже не первый раз...
Просто забудьте.
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 581
25.04.2014, 18:31     Работа с кастомными UITableViewCell и MVC #7
Вы со своими дефайнами уже не первый раз...
Переходим на личности да?
Конструктивной критики не будет? Хорошо. Я просто сказал какой еще может быть способ работы с данными, не более.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 22:49     Работа с кастомными UITableViewCell и MVC
Еще ссылки по теме:

Objective-C Отображение UITableViewCell в UIStoryboard
Редактирование заголовка UITableViewCell Objective-C
Objective-C Objective C,MVC,Singlton

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
25.04.2014, 22:49     Работа с кастомными UITableViewCell и MVC #8
Цитата Сообщение от noname_club Посмотреть сообщение
Переходим на личности да?
Да если бы на личности... Все равно эффекта ноль.
Цитата Сообщение от noname_club Посмотреть сообщение
Конструктивной критики не будет? Хорошо. Я просто сказал какой еще может быть способ работы с данными, не более.
Способ ваш - как у флинстоуна автомобиль, где нужно ногами перебирать, да еще и баранку крутить.

P.S. Конструктив можете попробовать найти в своих предыдущих темах про define-ы, там вам пытались разные мысли донести, а вы упираетесь до сих пор.
P.P.S На личности? Заняться мне больше нечем... Голые факты.
Yandex
Объявления
25.04.2014, 22:49     Работа с кастомными UITableViewCell и MVC
Ответ Создать тему
Опции темы

Текущее время: 20:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru