1

したがって、次のように、最初のビューから 2 番目のビューにデータを転送できます。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   if ([segue.identifier isEqualToString:@"Check Mark Segue"])
      {
        NSLog(@"Transfering Data");
        AutoRenewDrop *controller = segue.destinationViewController;
        controller.transferData = self.renewDate.text;
      }
}

ただし、ユーザーが完了したときに新しい値を renewDate.text に転送しようとしましたが、transferData は正しく機能していますが、renewDate.text は変更されません。データを転送するために使用しているコードは次のとおりです。

-(IBAction)done:(UIStoryboardSegue *)segue {

[self.navigationController popViewControllerAnimated:YES];
AddR *add = [[AddR alloc] init];
add.renewDate.text = transferData;

}

誰かがこれを修正する方法を教えてもらえますか?

4

2 に答える 2

3

最初のビューの参照を含むプロパティを2番目のビューに追加する必要があります。

@interface AutoRenewDrop
@property(weak, nonatomic) AddR *callerView;
@end

次に、2番目のビューのdoneメソッドで、呼び出し元ビューの変数を更新できます。

-(IBAction)done:(UIStoryboardSegue *)segue {
[self.navigationController popViewControllerAnimated:YES];
callerView.renewDate.text = transferData;
}

もちろん、2番目のビューをインスタンス化するときは、次のように参照を設定する必要があります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   if ([segue.identifier isEqualToString:@"Check Mark Segue"])
      {
        NSLog(@"Transfering Data");
        AutoRenewDrop *controller = segue.destinationViewController;
        controller.transferData = self.renewDate.text;
        controller.callerView = self; //Here, you are passing the reference to this View
      }
}
于 2012-11-03T14:18:59.707 に答える