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