2013-11-21 2 views
0

Итак, у меня есть этот подкласс класса UITableViewCell, в котором есть несколько действительно сложных логик - он вызывает некоторые действия в UIViewController, к которому он привязан. Конечно, клетка не знает о его UIViewController, но я по-прежнему перемещаться к нему, как это:Использовать отдельный подкласс UITableViewCell для нескольких UIViewControllers

UITabBarController *tabVC = (UITabBarController *)appDelegate.rootVC.centerPanel; 
SGFirstTabViewController *firstTab1 = [tabVC.viewControllers firstObject]; 

[firstTab1 reloadCell:self]; 

Дело в том, теперь, когда я хочу использовать один и тот же подкласс UITableViewCell около 5 различных UIViewControllers.

Каков наилучший способ для этого? Я почти никогда не знаю, что такое VC, и я просто не могу создавать 5 разных подклассов ячеек с одним и тем же кодом снова и снова. Каков наилучший способ?

ответ

1

Я думаю, что возможно некоторое недоразумение в роли ячейки в шаблоне программирования контроллера модели.

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

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

+0

Это звучит как идеальная идея. Итак, как насчет того, чтобы помещать все эти вещи делегата в несколько VC, не заставит ли он противоречить им, чтобы выяснить, какие действия для того, что VC было вызвано? –

+0

Если одна ячейка должна запускать действия для разных других VC, вам нужен механизм связи, который не так уж плотный: 'NSNotificationCenter'! Кроме того, не используйте ячейки, если у вас нет табличного представления. – Mundi

+0

Спасибо за отличный совет. Две очень полезные и яркие идеи для поддержки модели MVC) –

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