谁能告诉我如何用if ()
语句来发现 segue 的目标视图控制器是否会出现在 Detail Split 或 Master Split 中?
我想把if()
声明放在我的prepareForSegue:sender:
方法中。
编辑
我所有与这个问题相关的详细视图(目前)都符合协议,我目前正在使用以下方法对目标控制器进行自省:
if ([segue.destinationViewController conformsToProtocol:@protocol(myProtocol)])...
我可以看到,如果我愿意,这是行不通的:
- 为了能够不时在 splitView 的 Master 或 Detail 中显示相同的类,同时...
- 我只希望在要在细节拆分中显示视图时 if() 语句为真。
诸如此类的东西似乎segue.destinationViewController.navigationController == ...
也没有任何用处。
我希望,因为我们需要在设置 segue 时设置“Master Split”或“Detail Split”……有一种方法可以不那么迂回地访问这些信息。
第二次编辑:
我使用内省进行此设置的方式确实“有效”。它似乎不是很“面向对象”。我认为我根本不应该查询视图控制器来获取这些信息,我不明白为什么 VC 应该知道它将显示在 splitView 的哪一侧。当然,应该保留此信息的对象是 Segue,正如我所说,当我们选择“细节”或“主”拆分时,它似乎正在情节提要中“设置”。
也许它不是任何东西的属性,但我不知道如何得到它。
我想我可以在它的 viewWillAppear 中查询destinationViewController 以发现它出现在屏幕上后它所在的NavigationController,但同样,它似乎有点“hacky”。