[英]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.