如何在我的故事板上使用带有表视图但不是表viewController的segue

时间:2013-06-07 23:01:12

标签: iphone ios

好的,所以我一整天都在寻找解决方案,但没有任何东西弹出有效。 当用户选择“vrijdag”(=荷兰语的星期五)时,第二个ViewController会打开。

什么工作:我可以选择链接到导航控制器的第一个viewcontroller并右键单击并拖动到第二个Viewcontroller但不是从我添加到第一个ViewController的表视图中

我尝试了多个教程,但它们都使用了表视图控制器,而不是一个带有表视图的视图控制器:)

有人有解决方案吗? 当然,重要的是我也知道单击了哪个单元格,以便下一个Viewcontroller显示正确的信息。

My ViewController with the Table View in it

感谢您的时间:)

1 个答案:

答案 0 :(得分:2)

将视图控制器设为UITableViewDelegateUITableViewDataSource。然后在viewDidLoadself.myTableView.delegate = self

中设置您的代理人

然后,只需在代码中实现数据源和委托方法,尤其是这一个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  [self performSegueWithIdentifier:@"myCustomSegue" sender:indexPath];
}

编辑: 以下是如何在IB中设置手动segue。首先,选择您的第一个视图控制器,控制+单击并拖动到第二个视图控制器,然后从小菜单中选择“推送”。

enter image description here

然后,通过单击segue本身(视图控制器之间的直线上的圆圈)命名您的segue。然后转到右侧的Attributes Inspector,您将看到一个名为Identifier的字段。输入您想要的名称。

enter image description here

完成此设置后,performSegueWithIdentifier:sender:方法应该有效。

还有一点需要注意:您可以在方法prepareForSegue:sender:中设置segue的工作方式。这是一个示例实现。用自定义类替换类和属性名称。请注意,您可以使用以下方法设置目的地的公共属性:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender //sender should be an NSIndexPath object
{
    if ([segue.identifier isEqualToString:@"myCustomSegue"]) {
       NSIndexPath *indexPath = sender;
       MyViewController *secondViewController = (MyViewController*)segue.destinationViewController;
       UITableViewCell* cell = [self tableView:self.tableView cellForRowAtIndexPath:indexPath]
       secondViewController.name = cell.textLabel.text
    }
}