44

我正在构建一个大型故事板,我想知道是否有人为 segue identifiers 提出了有用的命名约定

看起来 Apple 在他们的示例中只使用了“ShowX”,其中 X 是它所显示的视图的名称。到目前为止,我更喜欢使用“PushX”或“ModalX”来跟踪它是哪种类型的过渡。任何人有任何其他技巧或提示?

4

4 回答 4

39
于 2014-11-12T14:58:52.927 回答
33

这个问题没有正确答案。这取决于口味。我减轻了可读性。不要羞于给你的 segue 标识符起一个长名字;给出长而富有表现力的名称,因为 Objective-C 是一种非常冗长的语言,它利用我们编写非常易读的代码。

我已经搜索了一个官方约定,但我找不到任何约定。这是苹果必须说的:

您在 Interface Builder 中为您的 segues 分配标识符。标识符是您的应用程序用来区分一个segue 和另一个segue 的字符串。例如,如果您有一个源视图控制器可以连接到两个或多个不同的目标视图控制器,您将为每个 segue 分配不同的标识符,以便源视图控制器的 prepareForSegue:sender: 方法可以区分它们并适当地准备每个 segue .

Ray Wenderlich 网站的另一句话:

给 segue 一个唯一的标识符。(它只需要在源场景中是唯一的;不同的场景可以使用相同的标识符。)

一种选择标识符名称的有趣方法(有关更多信息,请参见上面的链接):

  1. 首先编写验证 segue 标识符名称的代码,然后再在界面构建器中设置名称。我说的是这段代码:if ([segue.identifier isEqualToString:@"SegueIdentifierName"])

  2. 构建并运行!暂时不要在 Interface Builder 中填写标识符名称。您这样做是因为您可能有多个来自一个视图控制器的传出 segue,并且您需要能够区分它们。如果在您运行并触发您正在处理的 segue 时没有任何反应,那么您的 segue 名称标识符是唯一的并且很好用。相反,如果代码执行了您不希望的转场,则您的转场名称标识符存在冲突。

  3. 修复冲突 - 如果有的话。

  4. 在 Interface Builder 中填写 segue 标识符并测试它是否符合您的要求。

我喜欢这个,因为它就像一个 TDD 方法:编写一个失败的测试,编写一些代码来通过失败的测试,重构,重复。

于 2013-10-30T09:47:02.413 回答
5
"ViewControllerAToViewControllerB"

例如,如果您有一个 MasterViewController 和一个 DetailViewController,则 segue 标识符可能是:

"MasterToDetail"
于 2014-07-18T01:14:28.670 回答
1

我个人不会使用前面的动画类型,如果你改变动画,你需要回到代码中。但是,如果您在源控制器中将 segue 标识符声明为常量,则可以在以后更轻松地更改名称,而无需深入研究代码。

我通常使用我给控制器的名称,没有“ViewController”。所以 RatingViewController 将是“评级”作为故事板。一个例外是 unwind segues,我将它们命名为以“returnTo”开头并以目的地名称结尾的那些(“returnToRating”)。

于 2013-06-24T13:46:46.770 回答