2016-04-18 13 views
1

「popViewControllerAnimated」を呼び出すときに、あるビューコントローラから別のビューコントローラにNSStringを渡したいと思います。PopViewControllerAnimatedを使用してデータを渡すことはできますか?

私はScheduleExerciseViewControllerでこれを持っている:CalendarMainViewController.h

CalendarMainViewController *controller = [[CalendarMainViewController alloc]init]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyy-MM-dd"]; 
    NSString *fromDate = [formatter stringFromDate:self.dateCellsManager.startDate]; 
    NSLog(@"fromDate: %@", fromDate); 
    [controller setPutDateHere:fromDate]; 


    //Pop the controller view controller 
    [self.navigationController popToViewController:controller animated:YES]; 

は私が持っている:

@property (strong, nonatomic) NSMutableArray *datesWithEvent; 
@property (nonatomic,retain) NSString *putDateHere; 

そしてCalendarMainViewController

は私が持っている:

-(void) viewWillAppear:(BOOL)animated{ 
    self.tabBarController.title = @"Calendar"; 
    NSLog(@"putDataHere: %@", _putDateHere); 
    NSLog(@"datesWithEvents: %@", _datesWithEvent); 
} 

それは両方に "ヌル" 出力します。

提案/コメント/フィードバック

答えて

1

いいえ、あなたはそのメソッドを使用してデータを渡すことはできません。 NSNotificationを使用して簡単に行うことができます(強くお勧めします)。または、難しいやり方で、ナビゲーションコントローラをサブクラス化し、特定のビューコントローラにポップアップするカスタムメソッドを作成し、必要なパラメータ(推奨されません)をすべて取ることができます。

また、スタック上の古いものを見つける代わりに、新しいCalendarMainViewControllerをインスタンス化します。あなたは、あなたができる別の方法をスト​​ーリーボードを使用している場合

controller.putDateHere = fromDate; 

セッターとゲッターは、古い学校:)

+1

ありがとうございました。NSNotificationを使用することにしました。データを取得できました。ご協力いただきありがとうございます!。私はあなたのコメントを投票することはできません。なぜなら私は評判が15未満であるからです。 –

+0

私は理解しています。私はそれがうまくいってうれしいです。あなたが私に緑の小切手を与えることができるかどうか見てください。幸運:) –

+0

最後に!私は今、16の評判を持っています。 :) –

0

です:私はこのようなクラスのプロパティを設定最後には、スタックを介し

for (UIViewController* vc in self.navigationController.viewControllers){ 
    if ([vc isKindOfClass:[CalendarMainViewController class]]){ 
     [self.navigationController popToViewController:vc animated:true]; 
    } 
} 

を反復お勧めします以前のビューコントローラーに戻るときにデータをパスするときは、巻き戻しセグを使用してから、prepareForSegue:メソッドでデータを渡しています。

関連する問題