0

ビュー コントローラーをナビゲーション コントローラーに 1 つのプロパティ (非アトミックで強力な NSMutableArray *myData) で埋め込みました。2 番目のビューをプッシュするときに、このメソッドを使用して配列データもこのビューに渡します。

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {  
      if ([[segue identifier] isEqualToString:@"secondView"]) {
          SecondViewController *svc = [segue destinationViewController];
          svc.myDataInSecondView = self.myData;
     }

私の質問は: myDataInSecondView 配列の値を変更すると、最初に戻って myData 配列の値も変更されるのはなぜですか? 以前のビューにデータを戻すには、カスタム プロトコルとデリゲートを使用する必要があると常に考えていました。

4

1 に答える 1

1

あなたがやっている方法は、View Controller 間でデータを共有する非常に一般的な方法です。2 番目のビュー コントローラーには、最初のビュー コントローラーで設定できるプロパティがあります。プロパティは、最初のビュー コントローラーと同様にポインターです。どちらもメモリ内の同じ場所を指しているため、どちらのビュー コントローラーも同じデータを変更できます。

2 番目のビュー コントローラーでデータを変更したくない場合は、プロパティを に設定しますcopy

@property (nonatomic, copy) MyData *myData;
于 2013-03-13T21:31:44.970 に答える