0

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

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

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

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

我的 ViewController 里面有表格视图

感谢您的时间 :)

4

1 回答 1

2

使您的视图控制器 aUITableViewDelegateUITableViewDataSource. 然后将您的代表设置为viewDidLoad: self.myTableView.delegate = self

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

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

编辑:这是在 IB 中设置手动 segue 的方法。首先,选择你的第一个视图控制器,控制+单击并拖动到你的第二个视图控制器,然后从小菜单中选择“push”。

在此处输入图像描述

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

在此处输入图像描述

完成此设置后,该performSegueWithIdentifier:sender:方法应该可以工作。

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

- (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
    }
}
于 2013-06-07T23:13:46.650 回答