【问题标题】:Set Method Values With prepareForSegue使用 prepareForSegue 设置方法值
【发布时间】:2013-08-04 14:47:29
【问题描述】:

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

【问题讨论】:

  • 我听不懂。你不是已经在controller.tagName = tagName; 这样做了吗?为什么不以controller setCurrentHashtag:nil]; 为例?
  • 这实际上不起作用,但 controller.taganame 完全不同。

标签: ios objective-c variables uistoryboardsegue pushviewcontroller


【解决方案1】:

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

你可以简单地设置:

controller.currentHashtag = nil;

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

[self setCurrentHashtag:currentHashtag];

【讨论】:

  • controller.currentHashtag = nil[controller setCurrentHashtag:nil] 完全相同。当您尝试后一种语法时发生了什么?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 2011-12-29
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    相关资源
    最近更新 更多