2017-09-04 3 views
0

メインコントローラにすべてのコントローラをロードしようとしています。メインコントローラーをナビゲーションコントローラーとして使用しようとしています。メインコントローラセクションにコントローラをロードする

モーダルセグを試してみますが、メインコントローラのナビゲーションが表示されても、それを押すことができないため、最初のロードはロードできます。

トップコントローラーはcontrainsにリサイズする必要がありますが、私はどのように見つけることができていないと思います。

ここには私が達成しようとしているもののscreenshotがあります。
コントローラーはオレンジ色のセクションに移動する必要があります。

+0

より明確にあなたの質問を理解するために、なぜあなたはnavigatonコントローラのメインビューコントローラを埋め込むされていませんか?これは、他のView Controllerをナビゲーションスタックにプッシュするだけで簡単に読み込むことができます。 –

+0

これはあなたに役立つかもしれません:https://stackoverflow.com/a/11141688/8071224 –

答えて

0

ここに答えがあります。古いチュートリアルを見つけ、ちょうど調整を加えました。 他人を助けてくれるかもしれません。

Picture

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() { 

} 

} 
関連する問題