Dharmesh Kheni
Dharmesh Kheni

Reputation: 71854

'UIStoryboard.type' does not have member named 'centerViewController'

I am following THIS tutorial but I didn't downloaded starter project file from that tutorial because I want to make it differently but I am stuck here since an hour because I got this Error:

'UIStoryboard.type' does not have member named 'centerViewController'

Here I am trying to add subView (CenterViewController) into ContainerViewController.

Here is my code for ContainerViewController.swift

import UIKit
import QuartzCore

class ContainerViewController: UIViewController, CenterViewControllerDelegate {

var centerNavigationController: UINavigationController!
var centerViewController: CenterViewController!


override init() {
    super.init(nibName: nil, bundle: nil)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}


override func viewDidLoad() {
    super.viewDidLoad()

    centerViewController = UIStoryboard.centerViewController()    
    //'UIStoryboard.type' does not have member named 'centerViewController'
    centerViewController.delegate = self


    // wrap the centerViewController in a navigation controller, so we can push views to it
    // and display bar button items in the navigation bar
    centerNavigationController = UINavigationController(rootViewController: centerViewController)
    view.addSubview(centerNavigationController.view)
    addChildViewController(centerNavigationController)

    centerNavigationController.didMoveToParentViewController(self)

   }

}

This is my CenterViewController.swift

import UIKit

@objc
protocol CenterViewControllerDelegate {
optional func toggleLeftPanel()
optional func collapseSidePanels()
}

class CenterViewController: UIViewController {

var delegate: CenterViewControllerDelegate?

@IBAction func tableTapped(sender: AnyObject) {

    }
}

And this is my AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let containerViewController = ContainerViewController()

    window!.rootViewController = containerViewController
    window!.makeKeyAndVisible()
    return true
}

Can anyOne give me any Idea what I am missing?

Upvotes: 3

Views: 2462

Answers (1)

Vic Smith
Vic Smith

Reputation: 3497

You are missing the extension the tutorial author has provided that makes the UIStoryboard.centerViewController() method exist. The code is at the bottom of ContainerViewController.swift in his downloadable starter project, and I've copied it down below as well:

private extension UIStoryboard {
  class func mainStoryboard() -> UIStoryboard { return UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) }

  class func leftViewController() -> SidePanelViewController? {
    return mainStoryboard().instantiateViewControllerWithIdentifier("LeftViewController") as? SidePanelViewController
  }

  class func rightViewController() -> SidePanelViewController? {
    return mainStoryboard().instantiateViewControllerWithIdentifier("RightViewController") as? SidePanelViewController
  }

  class func centerViewController() -> CenterViewController? {
    return mainStoryboard().instantiateViewControllerWithIdentifier("CenterViewController") as? CenterViewController
  }
}

Add this to the bottom of your ContainerViewController.swift and it should work. (That is, as long as you have these view controllers set up in the right storyboard files with the right identifiers.)

Upvotes: 2

Related Questions