【问题标题】:prepareForSegue never called from performSegueWithIdentifierprepareForSegue 从未从 performSegueWithIdentifier 调用
【发布时间】:2015-02-04 01:47:48
【问题描述】:

我在 iOS 教程中使用带有导航控制器和两个简单​​表格视图的故事板来制作一个非常基本的应用程序。

我已经使用 Show segue 将初始视图连接到我的第二个视图,并为其指定了标识符“S1”。在我的初始视图的视图控制器中,我有以下代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    // Perform Segue
    [self performSegueWithIdentifier:@"S1" sender:self];
}

在我的第二个视图的视图控制器中,我有以下代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSLog(@"Triggered Segue");
}

但是,当我在第一个视图中选择一行时,NSLog 调用永远不会发生。第二个视图打开,但它完全是空白的。

我确定我在这里遗漏了一些非常基本的东西,但我很难过。我在 didSelectRowAtIndexPath 中设置了一个调试点,我可以确认它正在被调用。当我尝试进入 performSegueWithIdentifier 时,什么也没有发生。在我的第二个视图中 prepareForSegue 中的断点不会触发,但 viewDidLoad 中的断点会触发。对新的 iOS 开发者有帮助吗?

【问题讨论】:

  • segue 的准备应该在我认为的第一个视图控制器中
  • yes 将 prepareForSegue 移动到具有 performSegueWithIdentifier 的同一视图控制器

标签: ios xcode6


【解决方案1】:

performSegueWithIdentifier 手动触发 Segue。您有机会在 prepareForSegue 中设置变量等。两种方法都需要在同一个 ViewController 中。

【讨论】:

  • 成功了。出于某种原因,我认为接收控制器会自行处理设置内容,而不是让发送控制器为其设置属性。
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多