如何使用委托将数据从多个视图控制器传递回根视图控制器?Ios 7
我的故事板控制器: 菜单ViewController->选择ViewController->MapViewController和EditViewController 我需要将名为address的变量从MapViewController或EditViewController传递到MenuViewController。我如何实现这一点 根据这个答案,我试着使用delegate 但我不明白,在我们将MenuController推送到导航堆栈之前,如何告诉MapViewController或EditViewController MenuController是它的代理 我在EditVC做这件事,它的工作:如何使用委托将数据从多个视图控制器传递回根视图控制器?Ios 7,ios,objective-c,ios7,delegates,xcode5,Ios,Objective C,Ios7,Delegates,Xcode5,我的故事板控制器: 菜单ViewController->选择ViewController->MapViewController和EditViewController 我需要将名为address的变量从MapViewController或EditViewController传递到MenuViewController。我如何实现这一点 根据这个答案,我试着使用delegate 但我不明白,在我们将MenuController推送到导航堆栈之前,如何告诉MapViewController或EditVi
- (IBAction)OkButton:(id)sender {
NSString *address = addressInput.text;
MenuTableViewController *menuVC =
[self.navigationController.viewControllers objectAtIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
UITableViewCell *cell = [prevVC.tableView cellForRowAtIndexPath:indexPath];
cell.textLabel.text = address;
[self.navigationController popToViewController:menuVC animated:YES];
}
我猜这些视图控制器的类是 MenuViewController.h, MenuViewController.m 选择iewcontroller.h, 选择iewcontroller.m MapViewController.h, MapViewController.m EditViewController.h, EditViewController.m 当您以编程方式(performsgue方法)或使用导航控制器中的推送或模型执行序列时,会调用名为-prepareforsgue的方法 在源代码ViewController(VC)ie上实现这一点,如果您从MapViewController传递到EditViewController, 在MapViewController的.m文件中实现此功能
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"toEditViewController"])
{
EditViewController *destinationVC=(EditViewController*)segue.destinationViewController;
destinationVC.address=self.address;
}
}
请注意,您必须识别序列图像板中以其名称命名的序列
你需要准备更多的环节……你需要用同样的方法来完成所有这些
按名称识别序列>准备方法谢谢您的回答。我认为segues只用于向前推送数据。如果您从editVC更改地址,您还可以返回@user3840005,它将反映在MapViewController.addressHmm的对象中。当我从editVC按钮添加push segue到MenuVC时,它破坏了所有的导航栏。你不需要在这里执行segue。您要做的是返回到导航堆栈中的上一个视图控制器,对吗?因此,您必须弹出视图控制器并返回。您可以手动触发导航backbutton。。或者只是弹出视图控制器。