繁体   English   中英

如何使用委托将数据从多个视图控制器传递回根视图控制器? IOS 7

[英]How to pass data back from multiple view controllers to root view controller using delegate? Ios 7

我的情节提要控制器: http : //i.stack.imgur.com/4LBEd.png

MenuViewController-> ChooseViewControler-> MapViewController和EditViewController。

我需要将名为address的变量从MapViewController或EditViewController传递给MenuViewController。 我该如何实施?

我尝试使用从此答案在视图控制器之间传递数据的委托,但不理解如何在我们将其推入导航堆栈之前告诉MapViewController或EditViewController MenuController是其委托。

我在EditVC上执行此操作,它的工作原理是:

- (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];

}

我想你有这些viewcontrollers类

MenuViewController.h,MenuViewController.m

ChooseViewControler.h,ChooseViewControler.m

MapViewController.h,MapViewController.m

EditViewController.h,EditViewController.m

有这种方法称为-当执行赛格瑞任一编程(performSegue方法)PrepareForSegue调用或通过在导航控制器使用推或模型

在您的源ViewController(VC)上实现此功能,即,如果您从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;
    }

}

请注意,您必须识别在情节提要中通过名称给定的segue

在此处输入图片说明

您还需要准备许多其他任务...您需要使用相同的方法来完成所有这些任务。

通过名称识别序列>准备方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM