【发布时间】:2012-06-22 14:43:59
【问题描述】:
我创建了一个自定义导航控制器,我称之为CatalogueNavigationController。这个CatalogueNavigationController 有一个名为currentLevel 的属性,它的类型是int。
在此导航控制器中显示的我的一个视图控制器上,我想获得CatalogueNavigationController 的currentLevel 值。但是,当我尝试使用 self.navigationController.currentLevel 引用它时,我遇到了一个错误,提示 currentLevel 不是 UINavigationController 的属性 - 我知道,它是 CatalogueNavigationController 的一部分。
目录导航控制器
// .h
@interface CatalogueNavigationController : UINavigationController
@property int currentLevel;
// .m
@implementation CatalogueNavigationController
@synthesize currentLevel;
初始化视图控制器
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?
【问题讨论】:
标签: properties uinavigationcontroller custom-component