あなたの質問の上記のコードは問題ありません。ボタンなしでこれを行う方法について質問されていたのは知っていますが、デモンストレーションの問題は、ボタンを使用したが、ボタンをに適切に接続しなかったことIBAction
です。.hgoNext
で次のように定義する必要があります。
- (IBAction)goNext:(id)sender;
そして、実装は次のようになります。
- (IBAction)goNext:(id)sender
{
UIViewController *vc=[[self storyboard] instantiateViewControllerWithIdentifier:@"10"];
[self.navigationController pushViewController:vc animated:YES];
}
IBAction
手動で作成したと思います。将来的にcontrolは、ボタンからアシスタントエディタファイルに-ドラッグ(または右クリックドラッグ)すると、IBAction
インターフェイスの作成を自動化でき、この種のエラーは発生しないことに注意してください。
余談ですが、個人的には代わりにセグエを使用するのが好きなので、最初にビューコントローラー間のプッシュセグエを定義します。Xcode 6ではcontrol、シーンの上のViewControllerアイコンから宛先シーンにドラッグします。
6より前のXcodeバージョンcontrolでは、シーンの下のバーにあるViewControllerアイコンから-ドラッグします。
次に、Interface Builderでセグエを選択し、それに「ストーリーボード識別子」を付けます(この例では、これを呼び出しましたpushTo10
)。
次にgoNext
、手動で呼び出すのではなく、そのセグエを実行しpushViewController
ます。
- (IBAction)goNext:(id)sender
{
[self performSegueWithIdentifier:@"pushTo10" sender:self];
}
その利点は、ストーリーボードがアプリのフローを視覚的に表現するようになり(シーンが浮かんでいるように見えるのではなく)、ナビゲーションバーなどのグラフィック要素がストーリーボードに正しく表現されることです。
この方法で行う必要はありませんが、注意する必要があるもう1つの方法です。