对于哪些用例可能会选择tableView:didSelectRowAtIndexPath:而不是prepareForSe



我理解tableVIew:didSelectRowAtIndexPath:prepareForSegue:sender:之间的区别。此外,两者都可以用于在点击单元格时显示新视图。是否有可能选择tableView:didSelectRowAtIndexPath:而不是prepareForSegue:sender:的用例?如果是,那些用例是什么?

tableView:didSelectRowAtIndexPath:从一开始就出现在iOS上;prepareForSegue:是最近才发布的,包含了整个StoryBoard架构。因此,现在首选prepareForSegue:

注意实际的segue函数是prepareForSegue:sender:。当UITableViewCell启动segue时,sender将成为被选中的单元格。因此,您可以像在tableView:didSelectRowAtIndexPath:中那样获得所有可用的内容。

同样,segue在转换到另一个视图控制器时使用。如果你的应用没有单元格选择过渡到视图控制器,那么你就不能使用segue。例如,如果一个单元格选择,在你的应用程序中,要做一些动画或直接与视图,你会使用tableView:didSelectRowAtIndexPath:

我用的是"老办法"。为什么?因为我习惯了,这对我来说很有意义。它从一开始就可用。

另一方面,

prepareForSeque:是最近添加的。大多数过去使用过didSelectRowAtIndexPath的人都习惯了它,它可以工作,而且,如果没有坏,就不要修复它!

如果你使用的是UITableView,其中的行是动态的,你会想在tableVIew:didSelectRowAtIndexPath中调用你的segue

如果你看一下我的iPad应用的截图,例如,我从静态单元格中拖出每个segue

https://itunes.apple.com/ml/app/h4-spanish-lite/id388918463?mt=8

不幸的是,现在我想有法语和中文的应用程序。我现在没有法语的共轭器,也不适用于汉语。此外,有些游戏无法在中文环境下运行。现在我需要动态创建表。我可以创建单独的故事板,但这似乎很麻烦。

使用tableVIew:didSelectRowAtIndexPath,您将获得所选项目。当你知道被选中的项目时,你可以调用prepareForSegue:来设置下一个UIViewController,通过使用故事板设计,例如初始化一些属性。

编辑:如果你使用的是Storyboard,你只需要使用prepareForSegue:就可以了,从iOS 5开始

最新更新