StoryBoard обрабатывает унаследованный контроллер вида

Я новичок в раскадровке. Раньше я использовал свой код. У меня есть вопрос.

Я создал контроллер вида

@interface FunctionViewController : UIViewController

И я использую свой код для добавления

  • полноэкранная кнопка (alpha: 0.5)
  • всплывающий вид в середине (не в полноэкранном режиме)

Затем я создал еще один Viewcontroller

@interface PlayFunctionViewController : FunctionViewController

и добавьте несколько просмотров во всплывающем представлении

Я хочу воссоздать эти вещи, используя раскадровку.

Как я могу построить их с помощью построителя интерфейса и раскадровки, чтобы Мне не нужно отображать полноэкранную кнопку и всплывающее представление в каждом подклассе FunctionViewController?

Ответы

Ответ 1

Вы не можете наследовать макет суперкласса в подклассе в раскадровке, то есть, если вы визуально выложите элементы в контроллере представления в раскадровке и подключите их к коду, подклассам этого контроллера представления и даже к другим экземплярам одного и того же класса, должны быть выложены отдельно и не будут автоматически заполняться или обновляться.

Другими словами, в раскадровке вам придется вручную выложить и соединить все элементы интерфейса в каждом отдельном экземпляре и подклассе, который вы добавляете в раскадровку. Это дает вам гибкость в том, что вы можете повторно использовать несколько экземпляров одного класса во всем приложении и выкладывать их по-другому, но это не дает вам возможности наследовать макеты.

Если вы хотите наследовать свой макет в подклассах, сделайте свой макет программным путем в viewDidLoad вашего суперкласса, а затем все ваши подклассы будут иметь эти элементы интерфейса, даже если вы создадите и разместите их в своем раскадровке ( они не будут видны в раскадровке, но они появятся при создании и запуске вашего приложения).


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

Вы можете комбинировать код и раскадровку, чтобы вы могли создавать некоторые элементы в раскадровке, но другие, которые должны присутствовать во всех экземплярах и подклассах в коде.

Ответ 2

У меня возникла аналогичная проблема, и хотя это потребовало много времени, но создание делегата и повторное использование его в нескольких контроллерах представлений было гораздо лучшим решением. Хотя это и превосходит весь смысл "Наследования".