Шаги в создании подклассов UINavigationController - PullRequest
7 голосов
/ 13 июня 2010

Я хотел бы создать подкласс UINavigationController, чтобы получить больше свободы в отношении внешнего вида контроллера.

У меня есть немного графики для различных частей, полос, кнопок, текста и т. Д. Глядя на UINavigationControllerЗаголовочный файл Я получаю небольшую помощь, я не знаю, с чего начать.

Я никогда не переклассифицировал / не переопределил компонент UIKit раньше, кажется, это немного похоже на игру в Шерлока Холмса.

Каков подход?

Как узнать, что следует переопределить, чтобы конкретный фрагмент графики «внедрился» в правильное место?

Нужно ли создавать подкласс UINavigationBar, UIBarButtonItem и т. Д. И т. Д., Чтобы получить полностью настроенный внешний вид?

Как узнать, что что-то запрещено по отношению к утверждению Apple?

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

Спасибо:)

Ответы [ 2 ]

52 голосов
/ 09 апреля 2013

Теперь вы можете создать подкласс UINavigationController, см. Обновленную документацию:

Класс UINavigationController реализует специализированный контроллер представления, который управляет навигацией по иерархическому содержимому. Этот интерфейс навигации позволяет эффективно представлять ваши данные, а также облегчает пользователю навигацию по этому контенту. Этот класс обычно используется как есть, но может быть разделен на подклассы в iOS 6 и более поздних версиях.

Справочник по классам UINavigationController

8 голосов
/ 14 июня 2010

Вы не должны расширять UINavigationController.

Начиная с iOS 6, эта информация устарела. Из документов Xcode 5: Обычно этот класс используется как есть, но в iOS 6 и более поздних версиях вы можете использовать подкласс для настройки поведения класса.

Ниже приведена оригинальная устаревшая информация:

Из документации:

Класс UINavigationController реализует специализированный контроллер представления, который управляет навигацией по иерархическому содержимому. Этот класс не предназначен для создания подклассов. Вместо этого вы используете его экземпляры «как есть» в ситуациях, когда вы хотите, чтобы пользовательский интерфейс вашего приложения отражал иерархическую природу вашего контента.

Возможно, вы захотите создать категории или создать подклассы UINavigationBar и потенциально создать пользовательские кнопки UIBar, которые вы используете для создания UIBarButtonItems.

Всякий раз, когда вы имеете дело с компонентом пользовательского интерфейса, который выходит из UIView, вам следует подумать о создании подклассов и переопределении

- (void)drawRect:(CGRect)rect

Здесь можно найти множество примеров по stackoverflow или на официальном сайте документации Apple.

...