我运气不好,在网上找到的任何例子都与我正在做的非常吻合。我正在尝试使用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文件。