と呼ぶカスタム ナビゲーション コントローラを作成しましたCatalogueNavigationController
。これには、タイプのCatalogueNavigationController
と呼ばれるプロパティがあります。currentLevel
int
CatalogueNavigationController
このナビゲーション コントローラー内に表示されるビュー コントローラーの 1 つで、のcurrentLevel
値を取得したいと考えています。ただし、 で参照しようとすると、 currentLevel が のプロパティではないことself.navigationController.currentLevel
を示唆するエラーに直面します。UINavigationController
CatalogueNavigationController
CatalogNavigationController
// .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];
CatalogBrowser ビュー コントローラ
NSLog(@"%i",self.navigationController.currentLevel); //ERROR: Property 'currentLevel' not found on object of type 'UINavigationController *'
currentLevel 変数は、viewController がポップされるとデクリメントされ、viewController がプッシュされるとインクリメントされるため、ユーザーのナビゲーションの「深さ」を追跡できます。だから私はそれを現在の状態に戻す必要があります。
通知を使用してビュー コントローラーと CatalogueNavigationController の変数を組み合わせることができますが、もっと洗練された解決策があるのでしょうか?
self.navigationController を参照して の値を返すにはどうすればよいですか? ただし、UINavigationControllercurrentLevel
ではなく を参照するにはどうすればCatalogueNavigationController
よいですか?