好的,所以我一整天都在寻找解决方案,但没有任何东西弹出有效。 当用户选择“vrijdag”(=荷兰语的星期五)时,第二个ViewController会打开。
什么工作:我可以选择链接到导航控制器的第一个viewcontroller并右键单击并拖动到第二个Viewcontroller但不是从我添加到第一个ViewController的表视图中
我尝试了多个教程,但它们都使用了表视图控制器,而不是一个带有表视图的视图控制器:)
有人有解决方案吗? 当然,重要的是我也知道单击了哪个单元格,以便下一个Viewcontroller显示正确的信息。
感谢您的时间:)
答案 0 :(得分:2)
将视图控制器设为UITableViewDelegate
和UITableViewDataSource
。然后在viewDidLoad
:self.myTableView.delegate = self
。
然后,只需在代码中实现数据源和委托方法,尤其是这一个:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"myCustomSegue" sender:indexPath];
}
编辑: 以下是如何在IB中设置手动segue。首先,选择您的第一个视图控制器,控制+单击并拖动到第二个视图控制器,然后从小菜单中选择“推送”。
然后,通过单击segue本身(视图控制器之间的直线上的圆圈)命名您的segue。然后转到右侧的Attributes Inspector,您将看到一个名为Identifier的字段。输入您想要的名称。
完成此设置后,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
}
}