[英]iOS Swift - implementation of SplitViewController inside a Container View
我正在關注本教程鏈接
但是從一開始我就做了一次更改。
我添加了一個ViewController(並使其成為了初始視圖控制器)並在其中添加了一個容器視圖。
然后,將seageed嵌入在View容器和教程的SplitViewController之間。
一切順利,直到我執行此步驟:
轉到AppDelegate.swift並將應用程序(_:didFinishLaunchingWithOptions :)的實現替換為以下內容:
guard let splitViewController = window?.rootViewController as? UISplitViewController,
let leftNavController = splitViewController.viewControllers.first as? UINavigationController,
let masterViewController = leftNavController.topViewController as? MasterViewController,
let detailViewController = splitViewController.viewControllers.last as? DetailViewController
else { fatalError() }
let firstMonster = masterViewController.monsters.first
detailViewController.monster = firstMonster
return true
如何修改此代碼以適合我的情況?
在您的情況下,您將無法訪問AppDelegate中的uisplitviewcontroller。 由於您正在使用容器嵌入式視圖,如下圖所示。 您可以從第一個viewController的prepareFor序列中獲取UISplitviewcontroller的引用。 因此,與其在AppDelegate中編寫代碼,不如嘗試在初始viewController中准備segue。
ViewController的初始類ViewController:UIViewController {
@IBOutlet weak var containerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "embedseg" {
guard let splitViewController = segue.destination as? UISplitViewController,
let leftNavController = splitViewController.viewControllers.first as? UINavigationController,
let masterViewController = leftNavController.topViewController as? MasterViewController,
let rightNavController = splitViewController.viewControllers.last as? UINavigationController,
let detailViewController = rightNavController.topViewController as? DetailViewController
else { fatalError() }
let firstMonster = masterViewController.monsters.first
detailViewController.monster = firstMonster
masterViewController.delegate = detailViewController
detailViewController.navigationItem.leftItemsSupplementBackButton = true
detailViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.