私は興味深い問題に遭遇しました.私はメインViewControllerを持っています.navigationControllerで彼をMainVCと呼びましょう. したがって、popViewControllerAnimated を実行しようとしているときに、SecVC から MainVc にデータを渡したいと考えています。私がprepareForSegueを使用し、ローカルパラメーターを使用するように..
ありがとうございました...
私は興味深い問題に遭遇しました.私はメインViewControllerを持っています.navigationControllerで彼をMainVCと呼びましょう. したがって、popViewControllerAnimated を実行しようとしているときに、SecVC から MainVc にデータを渡したいと考えています。私がprepareForSegueを使用し、ローカルパラメーターを使用するように..
ありがとうございました...
最善の選択肢はDelegateを使用することであることに同意しますが、それでも別のものを探している場合は、代わりにNSNotificationCenterを使用できます。
MainVCのviewDidLoadでは:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(recvData:)
name:@"SecVCPopped"
object:nil];
}
MainVC.m にメソッドrecvDataを追加します。
- (void) recvData:(NSNotification *) notification
{
NSDictionary* userInfo = notification.userInfo;
int messageTotal = [[userInfo objectForKey:@"total"] intValue];
NSLog (@"Successfully received data from notification! %i", messageTotal);
}
SecVC で、ポップする前に、次の行を追加します。
NSMutableDictionary* userInfo = [NSMutableDictionary dictionary];
[userInfo setObject:[NSNumber numberWithInt:messageTotal] forKey:@"total"];
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"SecVCPopped" object:self userInfo:userInfo];
私は次のいずれかの方法でそれを行いますが、それが十分にエレガントであるかどうかはわかりません...
SecVCで、呼び出す前に@property MainVC *mainVC;
使用を追加します[self.mainVC setSomeValue:...];
[self.navigationController popViewControllerAnimated:...];
[self.navigationControllerviewControllers]を使用します; を見つけて、をポップするコード行の前にMainVC *mainVC
呼び出します。[mainVC setSomeValue:...];
ViewController
これは、あなたの望むことですか?