【发布时间】:2017-06-13 04:59:21
【问题描述】:
我几天来一直在尝试让UISplitViewController 给代表打电话。我尝试在MasterViewController 中设置它,我尝试在DetailViewController 中设置它,我尝试将SVC 作为另一个视图控制器内的容器中的嵌入式视图控制器,并使用prepareForSegue 调用来设置代表。我尝试从 AppDelegate 中的 Storyboard 实例化它并将委托设置在那里。代表永远不会被调用。我要疯了。
我在 iOS 10.3.1 上使用最新的非测试版 Swift (3.1)。
我已使用调试器检查委托实际上是否已设置,并保留在内存中,但是从未调用过方法。
感谢您为我提供的任何帮助。
这是我目前的 AppDelegate,但正如我所说,我已经尝试了 无数 种方法:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true
if let svc = self.window?.rootViewController as? UISplitViewController {
svc.delegate = svc.viewControllers.last as! UISplitViewControllerDelegate
}
return true
}
编辑 1:
你们中的一些人不明白我要实现的委托。为了澄清,我试图控制UISplitViewController 的代表,换句话说,UISplitViewControllerDelegate。我试图这样做的原因是能够控制视图的折叠。在UISplitViewController 的默认配置中,在iPhone 纵向模式下,它默认为detailViewController。对于大多数应用程序(和我的)来说,这种行为显然是错误的。我打算首先显示列出我要显示的内容的masterViewController,并仅在选择项目时触发detailViewController。
我也会接受一个答案,它给了我一些替代方式来实现这种行为(除非我的 detailViewController 设置了内容,否则我更喜欢肖像上的 masterViewController。
我知道您可以通过不在情节提要中设置detailViewController 并在选择项目时使用showDetail segue 来获得所描述的行为,但我的问题是我不能在没有默认视图时使用项目已被选中,导致在 iPad 或 iPhone Plus 上横向显示灰色方块(不是很漂亮)。
【问题讨论】:
-
你最终找到解决方案了吗?
标签: ios iphone swift uikit uisplitviewcontroller