Я создал настраиваемый контроллер навигации, который назвал CatalogueNavigationController
. Этот CatalogueNavigationController
имеет свойство под названием currentLevel
, которое относится к типу int
.
На одном из моих контроллеров представления, которые представлены в этом контроллере навигации, я хотел бы получить значение currentLevel
CatalogueNavigationController
. Однако, когда я пытаюсь сослаться на него с помощью self.navigationController.currentLevel
, я сталкиваюсь с ошибкой, которая предполагает, что currentLevel не является свойством UINavigationController
- я знаю, что это часть CatalogueNavigationController
.
КаталогНавигацияКонтроллер
// .h
@interface CatalogueNavigationController : UINavigationController
@property int currentLevel;
// .m
@implementation CatalogueNavigationController
@synthesize currentLevel;
Инициализация View Controller
CatalogueBrowser *catalogue = [[CatalogueBrowser alloc] initWithStyle:UITableViewStyleGrouped andQuery:nil];
CatalogueNavigationController *navigation = [[CatalogueNavigationController alloc] initWithRootViewController:catalogue];
navigation.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:navigation animated:YES];
Каталог Контроллер просмотра браузера
NSLog(@"%i",self.navigationController.currentLevel); //ERROR: Property 'currentLevel' not found on object of type 'UINavigationController *'
Переменная currentLevel уменьшается при открытии viewController и увеличивается при нажатии viewController, чтобы я мог отслеживать, «насколько глубоко» находится пользователь в навигации. Поэтому мне нужно вернуть его текущее состояние.
Я мог бы использовать уведомления, чтобы объединить переменную в моем контроллере представления и в CatalogueNavigationController, но, конечно, есть более элегантное решение?
Как я могу ссылаться на self.navigationController, чтобы вернуть значение currentLevel
, но чтобы оно ссылалось на CatalogueNavigationController
, а не на UINavigationController?