我运气不好,在网上找到的任何例子都与我正在做的非常吻合。我正在尝试使用NSPageController在多个NSPageControllers之间查看和切换。我的脚步。
我创建了一个新的OS X Swift项目
我将对象添加到ViewController并使其成为NSPageController类。
我添加了两个按钮,一个标记为“Next”,另一个标记为“Back”,用于转换。
我将按钮作为navigateForward和navigateBack操作链接到NSPageController对象。
我在customNSViewController类中为NSPageController对象创建了一个出口,并添加了特定的NSPageController委托方法。
我在故事板中添加了两个额外的视图控制器,并为它们创建了一个标识符,供它们在我的自定义视图控制器类中引用:wizard1,wizard2。
进口可可
类ViewController:nsViewController、nspageControllerDelegate{

@IBOutlet var myPageController: NSPageController!
override func viewDidLoad() {
    super.viewDidLoad()
    let vc1: AnyObject? = self.storyboard!.instantiateControllerWithIdentifier("Wizard1")
    let vc2: AnyObject? = self.storyboard!.instantiateControllerWithIdentifier("Wizard2")
    self.myPageController.arrangedObjects.append(vc1!)
    self.myPageController.arrangedObjects.append(vc2!)
    // Do any additional setup after loading the view.
}
override init?(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    myPageController = NSPageController()
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil?)
}

 required init?(coder aDecoder: NSCoder) {
myPageController = NSPageController()
super.init(coder:aDecoder)
}

override var representedObject: AnyObject? {
    didSet {
    // Update the view, if already loaded.
    }
}

func pageController(pageController: NSPageController, identifierForObject object: AnyObject!) -> String! {
    return "View"
}

func pageController(pageController: NSPageController, viewControllerForIdentifier identifier: String!) -> NSViewController! {
    let vc1: AnyObject? = self.storyboard!.instantiateControllerWithIdentifier("Wizard1")
    return vc1 as NSViewController

}
func pageController(pageController: NSPageController, prepareViewController viewController: NSViewController!, withObject object: AnyObject!) {
    viewController.representedObject = object
}
func pageControllerDidEndLiveTransition(pageController: NSPageController) {
    pageController.completeTransition()
}
func pageControllerWillStartLiveTransition(pageController: NSPageController) {
self.presentViewControllerAsModalWindow(self.storyboard?.instantiateControllerWithIdentifier("Wizard2") as NSViewController)

}

}
按下“下一步”按钮时出现的错误是:
-[NSNib initWithNibNamed:bundle:] could not load the nibName: NSPageController in bundle (null).

最佳答案

也许您试图在AppDelegate.m中加载名称错误的NIB,或者在初始化页面控制器的任何位置加载。
否则,您会错过创建.xib文件并将其命名为NSPageController。创建CocoaTouch类时,如果需要,还可以选中一个复选框来为类创建XIB文件。

10-07 18:27