Можно ли создать подкласс представления, созданного с помощью Interface Builder?

У меня есть представление, которое я построил в конструкторе интерфейсов с табличным представлением и соответствующими выходами и т. д., для отображения списка элементов. Щелкнув по элементу, вы увидите подробную информацию об этом элементе.

Теперь я хочу создать очень похожее представление со списком элементов того же типа, некоторыми дополнительными элементами управления и другим поведением при выборе ячеек. В этом случае, если пользователь нажмет на элемент, он будет эффективно использовать этот элемент в качестве шаблона для создания нового элемента. Или они могут нажать на кнопку, чтобы создать новый элемент. Помимо этого, есть много логики, которую я хочу повторно использовать из исходного представления — например, элементы зависят от местоположения, и есть фоновый поток, который обновляет информацию о местоположении.

Кажется, что естественным было бы создать подкласс исходного контроллера представления и создать макет второго представления с использованием IB. Однако, прежде чем я приступлю к этому, мне интересно, возможно ли это/рекомендуется практика? Распознает ли IB IBOutlets в суперклассе и позволит ли мне их подключить?


person frankodwyer    schedule 09.07.2009    source источник


Ответы (2)


IB распознает IBOutlets, определенные в суперклассе.

Вы делаете это все время: выход для представления в UIViewController определяется в суперклассе, который вы подклассируете для каждого из ваших контроллеров представления.

person pgb    schedule 09.07.2009

пгб правильно. IB будет распознавать торговые точки в суперклассе

Что касается того, является ли создание подкласса контроллера хорошей или плохой идеей, я не уверен. Apple предлагает создать подкласс NSArrayController, чтобы изменить поведение сортировки/фильтрации. Контроллер представления отличается от контроллера массива, но я осмелюсь сказать, что создание подкласса контроллера представления, вероятно, является правильным решением.

person Tom Dalling    schedule 09.07.2009