0

基本上,我使用 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”所在的视图控制器中声明。我该怎么做?

4

2 回答 2

0

这个问题的答案其实是非常明显的,但需要我自己提出问题才能实现答案。

您可以简单地设置:

controller.currentHashtag = nil;

currentHashtag 是视图控制器中新声明的实例。然后在实际的视图控制器集中:

[self setCurrentHashtag:currentHashtag];
于 2013-08-04T15:23:22.370 回答
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。

于 2013-08-04T17:06:48.940 回答