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 –