0

基本上,我使用prepareForSegue方法過渡到我的故事板內的另一個視圖,我的視圖必須嵌入導航控制器中才能顯示導航欄,所以我傳遞變量在這樣一個辦法:設置方法值與prepareForSegue

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"exploreAddSelected"]){ 

     UINavigationController *navController = (UINavigationController *)segue.destinationViewController; 
     AddTableViewController *controller = (AddTableViewController *)navController.topViewController; 
     controller.tagName = tagName; 
    } 
} 

我的問題是我需要能夠使用prepareForSegue方法時,在實際的視圖控制器設置一些方法值,你可以按照以下使用pushViewController時做到:

DetailViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; 
detailViewController.tagName = tagName; 
[detailViewController setCurrentHashtag:nil]; 
[navigationController pushViewController:self.detailViewController animated:YES]; 

我需要能夠設置「setCu rrentHashtag「方法,它在視圖控制器中聲明瞭」exploreAddSelected「繼續前進。我將如何做到這一點?

+2

我無法理解。 Arent,你已經在'controller.tagName = tagName;'中做了這樣的事情?爲什麼不'controller setCurrentHashtag:nil];'例如? –

+0

這實際上不起作用,但controller.taganame是完全不同的東西。 –

回答

0

對此的回答實際上是非常明顯的,但是我需要自問這個問題才能自己實現答案。

您可以簡單地設置:

controller.currentHashtag = nil; 

凡currentHashtag是在視圖控制器新聲明的實例。 然後在實際視圖控制器組:

[self setCurrentHashtag:currentHashtag]; 
+0

'controller.currentHashtag = nil'與'[controller setCurrentHashtag:nil]'完全一樣。當你嘗試後面的語法時發生了什麼? –

0

只需將currentHashtag添加到方法。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"exploreAddSelected"]){ 

    UINavigationController *navController = (UINavigationController *)segue.destinationViewController; 
    AddTableViewController *controller = (AddTableViewController *)navController.topViewController; 
    controller.tagName = tagName; 
    [controller setCurrentHashTag:nil]; //add this line 
    } 
} 

我不確定你在做什麼。如果segue直接指向視圖控制器(並且也不通過另一個導航控制器),則不需要映射到topviewcontroller,而是直接使用destinationcontroller。