web-dev-qa-db-ja.com

ビューコントローラ間で変数を渡す

この関数を使用して、Xcode4.3のビューを切り替えています。

[self performSegueWithIdentifier:@"NextView" sender:self];

ページ間でいくつかのパラメータを渡したいのですが。どうやってやるの?

12
Boban

performSegueWithIdentifier:sender:の後、ViewControllerはを呼び出します

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

新しいViewControllerに設定するプロパティがいくつかあると仮定します。

if ([[segue identifier] isEqualToString:@"NextView"]) {
    MyViewController *myVC = [segue destinationViewController];
    myVC.propertyToSet = // set your properties here
}
39
Pfitz

この質問には、ViewController間でデータを渡すことについての非常に優れた正しい説明があります。

View Controller間でのデータの受け渡し

5
Kaan Dedeoglu

これがPfitzからの回答ですが、Objective-Cを初めて使用する人にとっては、例を使用して少しわかりやすくしました。

  1. DestinationViewController.hファイルで、変数のプロパティ設定を追加して、ソースcontroller.mファイルから値を「受信」します。

    @property (nonatomic) int billIdReceivingVote;
    
  2. DestinationViewController.hをsourceViewController.mファイルにインポートします。

    // VOLViewController.m
    #import "VOLVoteViewController.h
    
  3. SourceViewController.mファイルにprepareForSegueメソッドを追加し、変数を渡します

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        VOLVoteViewController *myDestinationViewController = [segue destinationViewController];
    
        // myDestinationViewController.variable = sourceViewController variabe
        myDestinationViewController.billIdReceivingVote = [self.idOfBillSelected intValue];
    }
    
3
tmr