ここに答えがあります。古いチュートリアルを見つけ、ちょうど調整を加えました。 他人を助けてくれるかもしれません。
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コントローラのメインビューコントローラを埋め込むされていませんか?これは、他のView Controllerをナビゲーションスタックにプッシュするだけで簡単に読み込むことができます。 –
これはあなたに役立つかもしれません:https://stackoverflow.com/a/11141688/8071224 –