6

簡単な操作で動作させようとしています。少なくともそれは単純なようです。さて、私がやりたいのは、モーダルビューコントローラーでプッシュされたビューからビューを(プッシュビューコントローラーで)プッシュすることです。

View1-(モーダルビューコントローラーを使用してプッシュ)-> View2--(プッシュビューコントローラーを使用してプッシュ)--View3。

今、私はテストを行っているので、ボタンを使用してアクションを開始しています。これが、View2からView3にプッシュするために使用するコードです。

//view2.h
UIToolbar *bar;
UIBarButtonItem *button;
UIToolbar *toolbar;

}

- (IBAction)demissModal:(id)sender;
- (IBAction)goView3:(id)sender;

@end

//view2.m
- (IBAction)goView3:(id)sender{

View3 *view_3 = [[View3 alloc] initWithNibName:@"View3" bundle:nil];
[self.navigationController pushViewController:view_3 animated:YES];

}

これは、View1をView2にプッシュするために使用するのと同じコードであり、機能します。しかし、View2をView3にプッシュすると、機能しません。なぜそれが起こるのかについての考えはありますか?ありがとう!

4

4 に答える 4

11

ビューコントローラは、実際には「モーダル」または「プッシュ」ビューコントローラではありません。モーダルまたはプッシュは、ビューコントローラー間の遷移を表します(ストーリーボードを使用している場合はセグエと呼ばれます)。

あなたが求めているのは、ビューコントローラをモーダルに表示してから、別のコントローラをプッシュする方法です。秘訣は、ビューコントローラー#1をモーダルに提示して、ルートビューコントローラーがビューコントローラー#1として設定されたナビゲーションコントローラーを実際に提示することです。

MyViewController *myViewController = [MyViewController alloc] init];
UINavigationController *navController = [UINavigationController alloc] initWithRootViewController:myViewController];

// Presuming a view controller is asking for the modal transition in the first place.
[self presentViewController:navController animated:YES completion:nil];
// Now in myViewController, call [self.navigationController pushViewController:secondViewController animated:YES];

ストーリーボードを使用すると、次のようになります。 ここに画像の説明を入力してください

于 2012-10-12T02:48:03.673 に答える
0

これを試して:

[self.navigationController pushViewController:view_3 animated:YES];
于 2012-10-11T22:56:31.817 に答える
0

まず第一に、そのgegant_seがどこから来ているのかわかりません。

次に、view2からview3をプッシュするのと同じ方法でview1からview2をプッシュする場合は、モーダルを使用していません。

ナビゲーションコントローラーを使用してビューコントローラーをプッシュする場合は常に、プッシュされたばかりのビューコントローラーは、navigationControllerプロパティを介してナビゲーションコントローラーへの参照を持ちます。これを試して:

[self.navigationController pushViewController:view_3 animated:YES];
于 2012-10-11T22:58:48.630 に答える
0

このコードを試してくださいAlarmListはビュー名です。

AlarmListScreen * loscr = [[AlarmListScreen alloc] initWithNibName:nil bundle:nil];

[self.navigationController pushViewController:loscrアニメーション:YES];

[loscr release];
于 2013-06-26T11:30:20.567 に答える