0

一種のカスケード メニューを実装しています。

私のストーリーボードには、ルートビューコントローラーとしてUINavigationControllerある がありUIViewControllerます (それが であるとしましょうMyViewController)。MyViewController絵コンテID「Menu」を持っています。
このコントローラーはメニューなので、tableView を表示します。セルをクリックすると、特に次のコードがトリガーされます。

UINavigationController *menuNavigator = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
MyViewController *newMenu = (MyViewController*)menuNavigator.topViewController;
//Some configurations of newMenu
[self.navigationController pushViewController:newMenu animated:YES];

ここからすべてが正常に動作します。

サブメニューでは、最後のセルは「戻る」セルです。ユーザーがそれに触れると、コードがトリガーされます。

[self.navigationController popViewControllerAnimated:YES];

前のメニューに正しく戻りましたが、アニメーションはありません。

私も試しました:

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
[self.navigationController popToRootViewControllerAnimated:YES];

しかし、私はまだアニメーションを持っていません。

ストーリーボードで、ナビゲーション コントローラーがナビゲーション バーを表示しないように設定されています。それを表示して、自動表示される「戻る」ボタンをタッチすると、同じ結果になります。アニメーションはありません。

コードの何が問題になっていますか?

編集
Autolayout と ARC を使用しています。

4

1 に答える 1

0

編集:何か面白いことが起こっています。このコード行は間違っているようです:

UINavigationController *menuNavigator = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];

ビュー コントローラーをインスタンス化してナビゲーション コントローラーを取得しようとしているようです。なぜそのようなナビゲーターを取得する必要があるのか​​ わかりません。でナビゲーションコントローラーを簡単に取得できますself.navigationController

私は似たようなことをしていますが、私のコードは次のようになります。

このdidSelectRowAtIndexPath:メソッドでは、ストーリーボード オブジェクトを介してインスタンス化するのではなく、次のようにします。

    DVSecondTableViewController *vc = [[DVSecondTableViewController alloc] init];
    [self.navigationController pushViewController:vc animated:YES];

戻るには、ナビゲーション コントローラーが提供する [戻る] ボタンを使用するだけなので、ここではお手伝いできません。

于 2014-02-12T13:50:20.027 に答える