我运气不好,发现网上的任何一些与我想做的事情非常接近的例子。我正在尝试使用NSPageController
查看并在多个NSPageControllers
之间切换。我的步骤。
ViewController
添加了一个对象,并将其设为NSPageController
类。NSPageController
对象作为navigateForward和navigateBack操作。NSViewController
对象的自定义NSPageController
类中创建了一个插座,并添加了特定的NSPageController
委托方法。我在storyboard中添加了两个额外的视图控制器,并为它们创建了一个标识符,以便在我的自定义视图控制器类中引用:Wizard1,Wizard2。
导入Cocoa
类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).
答案 0 :(得分:0)
也许您正在尝试在AppDelegate.m
或正在初始化页面控制器的任何位置加载名称错误的笔尖。
否则您错过了创建.xib文件并将其命名为NSPageController
。在创建Cocoa Touch类时,如果需要,还有一个复选框也可以为您的类创建一个xib文件。
答案 1 :(得分:0)
此行负责错误:
myPageController = NSPageController()
您尝试在没有笔尖的情况下初始化视图控制器,这就是为什么它不起作用。默认情况下,NSViewController的名称用于标识与其对应的nib。在你的情况下,它是" NSPageController"。