我被困在Xcode中用Swift传递两个UITableViews之间的参数。如何在Swift中的两个UITableViewControllers之间传递数据?
我已经在这里看到了一些关于这个问题的问题,但即使我遵循了指示,仍然陷入困境。
我已经设置了我的故事板。我在这里遇到了问题,因为我发现的大多数指南都使用“显示”塞格,但出于某种原因,我只能使用“推”塞格。有没有办法,我可以拖动并创建一个“秀” Segue公司(也许是因为我通过在Windows和Mac不理解按Ctrl /命令键远程桌面使用Mac?)
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedIndex = indexPath.row
}
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
if (segue.identifier == "secondSegue") {
let controller = segue.destinationViewController as! SecondViewController
controller.valuePassed = selectedIndex
}
}
即使它的工作原理,由于某种原因,通过的指数从来不是现在的指数。相反,在第二个屏幕上收到的索引是之前选择的索引。
我也尝试使用“performSegueWithIdentifier”,但随着我的第二个屏幕打开两次,当我点击一个项目。我认为这是因为它们之间有一个“推”链接以及“performSegueWithIdentifier”。
我不知道如何创建一个Segue标识符,而无需链接故事板上的两个屏幕。所以,我不确定我的代码是否是错误的,如果我应该创建一个“显示”塞格(我真的是新的iOS编程,我不知道推和显示之间的实际区别UITableView的上下文),如果我应该以某种方式创建Segue标识符而不链接故事板上的屏幕,等等......我真的被卡住了,没有想法。
感谢任何帮助。谢谢。
据我所知,“显示”是他们称之为“Push”的部分。所以,你很好。 –
'prepareForSegue'在'didSelectRowAtIndexPath'之前被调用。如果你想在'prepareForSegue'中选择索引,那么通过'tableView.indexPathForSelectedRow.row'获取它。 – dan
我认为这里发生的事情是因为当你选择一个单元格时它将首先调用从单元格到单元格的segue prepareforsegue然后是selectedIndex = indexPath.row。因此,不要将segue与单元格链接,而要将VC与VC链接起来,并在didselect中调用performSegueWithIdentifier。 –