0

DetailViewテーブル ビューのデリゲート クラスを介してビュー コントローラー () をプッシュしていますMyClassMyClassのテーブル ビューのデリゲートとして機能しますMasterViewDetailView「didSelectRowAtIndexPath:」メソッドからプッシュしようとしていますが、戻るボタンが押さMyClassれるたびに無効になります。DetailViewMasterView

ビューをプッシュするための私のコード:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

if (!detailViewController) {
    detailViewController = [[DetailViewController alloc] init];
}

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.navigationController pushViewController:detailViewController animated:YES];

}
4

2 に答える 2

0

プッシュ コールを MasterView に戻す必要があるようです。

これを行うには、MyClass でプロトコルを設定し、MyClass から MasterView へのデリゲートを介してプッシュ コールを発生させます (これにより、奇妙な前後の委任パターンが発生します)、通知センターを使用します (複数のビューが必要な場合に役立つ場合があります)。このプッシュが発生していることを知っている)、または MyClass を初期化してプッシュに使用するときに MasterView への参照を渡すことによって。

何を選択しても、AppDelegate の nav コントローラーを使用しようとすると、間違いなく奇妙な結果が得られます。

于 2013-06-24T01:21:18.753 に答える
0

の代わりに[appDelegate.navigationController pushViewController:detailViewController animated:YES];、 を使用します[self.navigationController pushViewController:detailViewController animated:YES];

appDelegateのナビゲーション コントローラーは、 のナビゲーション コントローラーとは異なるインスタンスのように聞こえますMasterView。これにより、奇妙な動作が説明されます。

を使用すると、別のビュー コントローラーがナビゲーション コントローラーのスタックのself.navigationController一番上にプッシュされます。MasterView

于 2013-06-23T23:23:46.700 に答える