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。