UINavigationControllerDelegateメソッドは、現在の方向をサポートしていないView Controllerにポップするときに呼び出されません。UINavigationControllerDelegateメソッドが呼び出されない(githubのデモコード)
私のアプリのルートビューコントローラ(私のストーリーボードの初期ビューコントローラ)としてUINavigationControllerがあります。
レッツは、私はオリエンテーションのためにこれでのViewController Aを押して言う:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
そこで我々はすべてのランドスケープモードをサポートしていません。その上のコードで別のViewControllerを押してみましょう:私は肖像画に私のiPhoneを持っていると私はAの上にビューコントローラのBを押した場合
@interface B : UIViewController <UINavigationControllerDelegate>
@end
@implementation B
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES; // any orientation supported
}
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UINavigationController *nc = (UINavigationController*)appDelegate.window.rootViewController;
nc.delegate = self;
}
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// not always called...
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// not always called...
}
@end
は今、いくつかのタッチイベントを経て、その後に「戻る」ボタンをタッチnavbar、すべてが問題なく、デリゲートメソッドが呼び出されます(私はそこにいくつかのことを行います)。
ビューBを表示しているときにランドスケープに回転してから戻るボタンを押すと、そのデリゲートメソッドは呼び出されません。 UINavigationControllerのデリゲートを設定するポイントは何ですか?メソッドは他のものではなく時々呼び出されますか?確かに私は何か間違っている。
私はAppDelegateやMainViewのような他のクラスにデリゲートを置こうとしますが、何も変わりません。
アイデア?ここ
デモコード:git://github.com/malaba/NavBarTest.git
基本的なマスター・ディテールテンプレートから、ちょうど上記のように修正。
ポイントを表示するには?ここでは、ステップバイステップである:(+の右上)
- マスタービューでいくつかの行を追加します。その後、詳細に行くためのラインに触れ を示す出力に
- 参照ログを表示
- 「戻る」ボタン(「マスター」と表示)を押して、再度ログを表示します。今
、その後、「背中」に行くと現れてなしログを参照してください詳細ビューでiPhone(またはシミュレータ)を回転させるようにしてみてください!
この言語は何ですか? Obj-C++?私は今翻訳しています... – malaba
MonoTouchを使っているのはC#です。 –