1

У меня есть класс X, который расширяет UIViewController. К моему удивлению, этот класс может иметь следующий код:UViewController's navigationController свойство

[self.navigationController popViewControllerAnimated:YES]; 

navigationController, насколько я вижу, это свойство добавлено категории в UINavigationController.h:

@interface UIViewController (UINavigationControllerItem) 
@property(nonatomic,readonly,retain) UINavigationController *navigationController; 
@end 

Мой класс расширяет UIViewController, не UINavigationController, и я не вижу способа передачи этой категории. Я думал, что мне нужно импортировать категорию для доступа к объявленным ею членам. Итак, как UIViewController имеет доступ к объявлению свойства в другом, несвязанный заголовочный файл?

Спасибо, Янош

+0

Он уже импортирован для вас, добавив «», подумайте о UINavigationController, а затем импортировали «UINavigationController.h» для использования UINavigationController? Как насчет UIButton? UILabel? .. То же самое .. – andykkt

+0

Да, большое спасибо! Я смогу спать сейчас;) – Janos

ответ

1

Согласно Apple, документации UIViewController имеет navigationController свойство:

Ближайший предок в иерархии контроллера представления, который представляет собой навигационный контроллер. (Только для чтения). Если получатель или один из его предков является дочерним элементом навигационного контроллера, это свойство содержит управляющий контроллер навигации. Это свойство равно нулю, если контроллер просмотра не встроен в контроллер навигации.

См. Документацию UIViewController.

+0

Спасибо yursol, но мой вопрос был немного более общим по своей природе. Я не понимал, как можно передать свойство или метод без явной ссылки на категорию, которая его вводила. Как отметил Шайк в своем комментарии выше, это косвенно ссылается на импорт UIKit/UIKit.h. Спасибо, Янош – Janos

Смежные вопросы