簡體   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