2012-06-01 53 views
1

我有一個ViewController,具有UIButton執行以下操作:你可以通過dismissModalViewControllerAnimated返回數據嗎?還是你需要一個返回旅程的繼續?

- (IBAction)buttonClicked:(id)sender 
{ 
    NSLog(@"Button clicked, lets move to next controller to do stuff"); 
    [self performSegueWithIdentifier:@"toNextController" sender:nil]; 
} 

這只是移動到我的下一個ViewController,沒有什麼驚人至今。

在第二個ViewController中,我將執行一些應用程序邏輯,然後返回。

- (IBAction)backButtonPressed:(id)sender 
{ 
    NSLog(@"Back button clicked, lets just drop out of here..."); 
    [self dismissModalViewControllerAnimated:YES]; 
} 

- (IBAction)saveButtonPressed:(id)sender 
{ 
    NSLog(@"save button clicked, lets send some data back"); 

    [self performSegueWithIdentifier:@"backToMain" sender:nil]; 
} 

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{  
    if ([segue.identifier isEqualToString:@"backToMain"]) 
    { 
     NSLog(@"Preparing segue for backToMain"); 

     // Obtain handles on the current and destination controllers 
     MainController * startingViewController; 
     SecondController * destinationController; 

     startingViewController = (MainController *) segue.sourceViewController; 
     destinationController = (SecondController *) segue.destinationViewController; 

     // set data on the main controller 
     startingViewController.myString = @"SomeDummyString"; 
    } 
} 

我已經試過到目前爲止做的,是創建一個鏈接返回到主控制器,並執行SEGUE前,搶在其上的手柄和固定數據的第二SEGUE。我不確定這是否是最好的導航方式。

問:

是否有可能,做一個[self dismissModalViewControllerAnimated:YES];時返回數據,或者你需要實現回程車一個SEGUE?

+2

我不會執行另一個segue回到第一個控制器。據我瞭解,這創建了一個全新的Controller類實例,實際上你只是在越來越多的控制器上添加更多的控制器,因爲它們彼此來回移動。我會使用委託/協議方法。看到這個:http://stackoverflow.com/questions/10841653/create-a-modal-view-with-navigation-bar-and-back-button/10841897#10841897 –

回答

1

檢查了這一點:10841897

它描述了使用代理和協議將信息發送來回。只需創建一個savedWithData:方法即可將字典或任何想要的數據發送回第一個視圖控制器,而不僅僅是鏈接中描述的通用done

1

你可以做這樣的事情

[destinationController setSomeData:@"Sending Something Back"]; 

這在destinationController加載之前將設置一個@property。

相關問題