3

次のように、シークに Storyboards を使用するコードがあります。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"ShowDiagnosis"])
    {
        [segue.destinationViewController setHappiness:self.diagnosis];
    }
    ...

しかし、私はプログラムでそれをやりたいです。私は myViewController クラスを持っており、ボタンをクリックすると、アニメーション化して myUINavigationController にプッシュしたいと考えています。

これはプログラムでどのように行われますか?

4

2 に答える 2

10

まず第一に、セグエはプログラムで作成することはできません。これは、実行時にストーリーボード ランタイムによって作成されます。ただし、 を呼び出すことで、インターフェイス ビルダーで既に定義されているセグエをトリガーすることができますperformSegueWithIdentifier:

これ以外にも、セグエ オブジェクトなしでビュー コントローラー間の遷移を提供できます。対応するアクション メソッドで、プログラムで割り当てるか、識別子を使用してストーリーボードからインスタンス化することにより、View Controller インスタンスを作成します。次に、それをナビゲーション コントローラーにプッシュします。

- (void)buttonClicked:(UIButton *)sender
{
    MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"my-vc-identifier"];
    // OR MyViewController *vc = [[MyViewController alloc] init];

    // any setup code for *vc

    [self.navigationController pushViewController:vc animated:YES];
}
于 2013-09-13T07:54:43.833 に答える