tableVIew:didSelectRowAtIndexPath:
我理解和之间的区别prepareForSegue:sender:
。此外,两者都可用于在点击单元格时显示新视图。是否存在可以选择tableView:didSelectRowAtIndexPath:
而不是选择的用例prepareForSegue:sender:
?如果是这样,这些用例是什么?
4 回答
历史上tableView:didSelectRowAtIndexPath:
从一开始就在 iOS 中可用;prepareForSegue:
仅在最近才可用,具有整个 StoryBoard 架构。因此,这些天,prepareForSegue:
是首选。
请注意,实际的 segue 函数是prepareForSegue:sender:
. 当 aUITableViewCell
启动 segue 时,sender
将成为选定的单元格。因此,您可以像在tableView:didSelectRowAtIndexPath:
.
此外,在转换到另一个视图控制器时使用 segues。如果您的应用程序没有单元格选择转换到视图控制器,那么您不能使用 segue。例如,如果您的应用程序中的单元格选择将使用动画或直接使用视图执行某些操作,您将使用tableView:didSelectRowAtIndexPath:
如果您使用的是动态行的 UITableView,您将需要在 tableVIew:didSelectRowAtIndexPath 中调用您的 segue
例如,如果您查看我的 iPad 应用程序的屏幕截图,我会从静态单元格中拖出每个 segue。
https://itunes.apple.com/ml/app/h4-spanish-lite/id388918463?mt=8#
不幸的是,现在我想拥有法语和中文的应用程序。我目前没有法语的共轭器,它不适用于中文。另外,有些游戏不支持中文。所以,现在我需要动态创建我的表。我可以创建单独的故事板,但这似乎很麻烦。
我使用“旧方式”。为什么?因为我已经习惯了,这对我来说很有意义。它从一开始就可用。
prepareForSeque:
另一方面,最近添加了。大多数didSelectRowAtIndexPath
过去使用过的人都习惯了它,它可以工作,此外,如果它没有坏,请不要修复它!
随着tableVIew:didSelectRowAtIndexPath
您获得选定的项目。当你知道选择的项目时,你可以调用prepareForSegue:
来设置下一个UIViewController
使用 Storyboard 设计的,例如初始化一些属性。
编辑:prepareForSegue:
如果您使用的是 Storyboard,您只需使用它,自 iOS 5 起可用