Могу ли я создать подкласс пользовательского контроллера представления

Я создал подкласс UITableViewController с именем CalendarTableViewController.h и .m. Он показывает список событий в указанном диапазоне (например, все события в 2014 году). Я хотел бы иметь еще два контроллера представления (для месяца и дня) и складывать их поверх первого контроллера представления.

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

Я занимаюсь разработкой с Xcode около года, поэтому, возможно, я упускаю что-то глупо простое. Но все, что я знаю, это как создать подкласс UITableViewController. Как вы подклассифицируете свой собственный контроллер представления?

Я был бы признателен, если бы вы могли поделиться своей мудростью. Йоши


person tsuyoski    schedule 08.11.2014    source источник
comment
Конечно вы можете. Когда вы добавляете новый контроллер через пункт меню «Новый файл», просто поместите CalendarTableViewController в подкласс поля.   -  person rdelmar    schedule 08.11.2014


Ответы (1)


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

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

Короче говоря, да, в таких случаях вы можете и должны создавать подклассы. Вот как вы это делаете в Objective-c в файле .h (в вашем новом классе)

  @interface MySecondController : CalendarTableViewController {
  }

В Свифте

  class MySecondController: CalendarTableViewController {
      // subclass definition goes here
  }

Я надеюсь, что это помогает

person iHS    schedule 08.11.2014
comment
Я узнал, что я мог сделать неправильно. Я вручную переименовал CalendarTableViewController в MasterTableViewController и попытался сделать MySecondController дочерним элементом MasterTableViewController. Но когда я выбираю Файл › Создать › Файл › Cocoa Touch Class, он не позволяет мне создать подкласс MasterTableViewController. Xcode по-прежнему распознает старое имя (CalendarTableViewController), и создание дочернего класса прошло успешно. Что я сделал не так, переименовав родительский контроллер представления? - person tsuyoski; 08.11.2014
comment
Неважно. Я понял. Я оставил CalendarTableViewController в некоторых файлах .h в объявлении @interface. - person tsuyoski; 08.11.2014