0
我試圖加載主控制器中的所有控制器。嘗試使用主控制器作爲導航控制器。在主控制器部分加載uiviewcontroller
我嘗試模態賽格,但我只能加載第一個,因爲即使我可以看到主控制器上的導航我不能按下它。
我認爲頂級控制器必須調整爲禁忌,但我一直無法找到。我想要實現的是screenshot。
控制器需要進入橙色部分。
我試圖加載主控制器中的所有控制器。嘗試使用主控制器作爲導航控制器。在主控制器部分加載uiviewcontroller
我嘗試模態賽格,但我只能加載第一個,因爲即使我可以看到主控制器上的導航我不能按下它。
我認爲頂級控制器必須調整爲禁忌,但我一直無法找到。我想要實現的是screenshot。
控制器需要進入橙色部分。
這是答案。找到一個老的教程,只做了一些調整。 也許可以幫助別人。
MenuCV
import UIKit
class MenuCV: UIViewController {
@IBOutlet weak var tableView: UITableView!
var containerView: ContainerVC?
var menuItems = [String]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
menuItems = ["Dashboard", "Companies", "Makes"]
}
}
extension MenuCV: UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menuItems.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "menuCell") as? MenuTVC else { return UITableViewCell() }
let image = UIImage(named: "logo")
cell.configureCell(menuIcon: image!, menuLbl: menuItems[indexPath.row])
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
containerView?.segueIdentifierReceivedFromParent(button: menuItems[indexPath.row])
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "container" {
containerView = segue.destination as? ContainerVC
}
}
}
ContainerVC
import UIKit
class ContainerVC: UIViewController {
var vc : UIViewController!
var segueIdentifier : String!
var lastViewController: UIViewController!
override func viewDidLoad() {
super.viewDidLoad()
segueIdentifierReceivedFromParent(button: "Dashboard")
}
func segueIdentifierReceivedFromParent(button: String){
self.segueIdentifier = button
self.performSegue(withIdentifier: self.segueIdentifier, sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == segueIdentifier{
//Avoids creation of a stack of view controllers
if lastViewController != nil{
lastViewController.view.removeFromSuperview()
}
//Adds View Controller to Container
vc = segue.destination
self.addChildViewController(vc)
vc.view.frame = CGRect(x: 0,y: 0, width: self.view.frame.width,height: self.view.frame.height)
self.view.addSubview(vc.view)
vc.didMove(toParentViewController: self)
lastViewController = vc
}
}
}
DashboardVC
import UIKit
class DashboardVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
CompaniesVC
import UIKit
class CompaniesVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
MakesVC
import UIKit
class MakesVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
EmptyVC
import UIKit
class EmptyCV: UIStoryboardSegue {
override func perform() {
}
}
爲了更清楚地瞭解你的問題,你爲什麼不在navigaton控制器嵌入主視圖控制器?通過將它們推到導航堆棧上,可以輕鬆加載其他視圖控制器。 –
這可能對您有所幫助:https://stackoverflow.com/a/11141688/8071224 –