読者です 読者をやめる 読者になる 読者になる

Segueで画面遷移するときの値の渡し方

Xcode Objective-C

prepareForSegue内で遷移先ViewControllerのpublic propertyに値をセットするやり方です。SegueのIdentifierを判別するやり方だと今後数が増えてきた時に大変そうですが基本ぽいので覚えます。

スマートにやる方法は追々調べていきたいですが、今のところこれが参考になりました。


prepareForSegueは、Segueによる画面遷移の前になんか準備するメソッドです。
前述の通り遷移先のViewControllerにpublic propertyを設定している前提なので値をセットする処理を書きます。

雛形のコメントにあるように遷移先のViewControllerはこれで取得ができます。

// Get the new view controller using [segue destinationViewController].

遷移先のインスタンスで変数を作成したいですがそのままだと、遷移先のクラスを参照できないのでhファイルをimportしてから値をセットしましょう。

#import "NextViewController.h"
//...略
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    if([[segue identifier] isEqualToString:@"identifier"]){
        NextViewController *next = [segue destinationViewController];
        next.hoge = @"hoge";
    }
}

文字列の場合はこんな感じですね。