Comments 12
А теперь смотрим, как сделан UITableViewController, что-то я там не видел property типа UITableView *view.
0
Apple меняет подклассы.
Я поставил брейкпойнт во
Более того, можно заменить даже класс CALayer для UIView. Для этого есть
Я поставил брейкпойнт во
viewDidLoad
и посмотрел типы view
(через po view
в консоли). Результаты: UITableViewController — UITableView
UICollectionViewController — UICollectionViewControllerWrapperView
у которого только один дочерний UICollectionView
Более того, можно заменить даже класс CALayer для UIView. Для этого есть
type property
в классе UIView
:open class var layerClass: AnyClass { get }
+1
можно, но никто не перекрывает UIView *view, а добавляют новое типизированное свойство
0
С UICollectionViewController кстати отличный пример: тип self.view никого не должен интересовать, это свойство как правило используется только для создания иерархии childViewController или subviews на этом экране. А для доступа к collectionView есть отдельное свойство. С таким подходом можно как угодно менять иерархию внутри view этого контроллера, а для клиентского кода эти изменения пройдут незамеченными.
0
Это хвост из Obj-C, по видимому. Там возможно переопределить тип в заголовочном файле таким же способов. Так как objective-c использует селекторы настоящий класс не важен, важно лишь чтобы класс отзывался на нужные.
0
@dynamic
нужен только для того, чтобы сказать компилятору, что не нужно генерировать getter/setter. Вы можете изменить свойство у существующего поля. Помнится, я так с datasource делал, так как потомку от класса нужны были дополнительные данные.Впрочем, в случае с кастомными контроллерами, я бы поступал по аналогии с системными классами — для единообразия.
0
На самом деле, MVC так и задумывался. В оригинале модели еще и активные были, а не просто структуры данных.
0
В принципе вынесение UI в UIView и кода по его обработке аналогично реализации фрагментов в Android и применяется в тех же случаях и целях. Я подобный подход использую уже несколько лет. Только верстку я делаю на xib именно отдельного UIView, а не UIViewController. В случае, когда нужно менять в одном и том же контроллере разные виды, это более корректно.
+1
Sign up to leave a comment.
Контроллер, полегче! Выносим код в UIView