【问题标题】:prepareForSegue not being called from UITableView in a UIViewController没有从 UIViewController 中的 UITableView 调用 prepareForSegue
【发布时间】:2013-11-26 23:06:52
【问题描述】:

我有一个包含 UITableView 的 UIViewController。表格视图包含一个自定义 UITableViewCell。自定义单元格内置在界面生成器中,并有一个笔尖。在我的主故事板中,我将一个 segue 从自定义表格视图单元拖到目标视图控制器。我在 prepareForSegue 中设置了最基本的基本要素,设置了一个断点,但它从未被调用。

我不太习惯在视图控制器中使用 UITableView。我通常使用 UITableViewController,但要求在视图控制器中使用表视图。我最初的假设是大多数做事的方法几乎是相同的,但我发现情况并非如此。

我尝试从视图控制器本身设置 segue 并使用 didSelectRowAtIndexPath,虽然它有效,但到目标视图控制器的转换很不稳定。

谁能建议我可能缺少什么以触发 prepareForSegue 方法?

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    GaugeViewController *destination = [segue destinationViewController];
    [destination setGaugeID:@"1"];
}

谢谢!

【问题讨论】:

  • 你能发布一些你的代码吗?
  • 我没有针对这种情况发布的代码。我在 IB 中创建了 segue 并在 prepareForSegue 中设置了一个断点,它没有被调用
  • 您的项目中一定有一些代码,因为您正在调用prepareForSegue
  • 查看编辑。就像我说的,没什么可展示的。真的只是想弄清楚为什么这个方法不会触发
  • 您是否要进行推送转场?如果是这样,您的控制器是否嵌入在导航控制器中?

标签: objective-c uitableview uiviewcontroller uistoryboardsegue


【解决方案1】:

您需要在 Storyboard 中引用 segue 的身份,如下所示:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    GaugeViewController *destination = segue.destinationViewController;

    if([segue.identifier isEqualToString:@"yourSegue"]) {
       NSLog(@"prepareForSegue called");
       [destination setGaugeID:@"1"];
    }else {
       // do something else
    }

}

别忘了在 Storyboard 中设置标识符。

请记住,推送转场与导航控制器一起使用,并且可以将模态转场从视图控制器拖动到视图控制器。

【讨论】:

  • 我同意。然而,目前,代码从未到达 prepareForSegue,所以我试图在继续之前到达该方法中的断点
  • @Pheepster 您是否在情节提要中命名了 Segue 标识符?
  • 不,您实际上不需要引用标识符。这样做通常是一种很好的做法,如果您有多个 segue 连接到此控制器,这将是必要的。它不会导致 OP 看到的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
相关资源
最近更新 更多