Ios 使用PrepareForsgue设置方法值

Ios 使用PrepareForsgue设置方法值,ios,objective-c,variables,uistoryboardsegue,pushviewcontroller,Ios,Objective C,Variables,Uistoryboardsegue,Pushviewcontroller,基本上,我正在使用prepareForSegue方法转换到故事板中的另一个视图,我的视图必须嵌入到导航控制器中才能显示导航栏,因此我以这种方式传递变量: -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if([segue.identifier isEqualToString:@"exploreAddSelected"]){ UINavigationController *n

基本上,我正在使用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];

我需要能够设置“setCurrentHashtag”方法,该方法在segue“exploreAddSelected”所指向的视图控制器中声明。我该怎么做呢?

这个问题的答案其实非常明显,但我需要问这个问题才能自己意识到答案

您只需设置:

controller.currentHashtag = nil;
其中currentHashtag是视图控制器中新声明的实例。 然后在实际视图控制器集中:

[self setCurrentHashtag:currentHashtag];

只需将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

我不明白。你不是在
controller.tagName=tagName?为什么不
控制器setCurrentHashtag:nil]实际上不起作用,但controller.taganame是完全不同的。
controller.currentHashtag=nil
[controller setCurrentHashtag:nil]
完全相同。尝试后一种语法时发生了什么?