gpt4 book ai didi

macos - 如何使用 NSPageController 在 NSViewController 之间切换?

转载 作者:搜寻专家 更新时间:2023-10-31 21:48:47 24 4
gpt4 key购买 nike

我运气不好,在网络上找不到任何与我正在尝试做的事情非常匹配的例子。我正在尝试使用 NSPageController 查看和在多个 NSPageControllers 之间切换。我的脚步。

  1. 我创建了一个新的 OS X swift 项目
  2. 我将对象添加到 ViewController 并使其成为 NSPageController 类。
  3. 我添加了两个按钮,一个标记为“下一步”,另一个标记为“返回”以用于转换。
  4. 我将按钮链接到 NSPageController 对象作为 navigateForward 和 navigateBack 操作。
  5. 我在自定义 NSViewController 类中为 NSPageController 对象创建了一个 socket ,并添加了特定的 NSPageController 委托(delegate)方法。
  6. 我在 Storyboard 中添加了两个额外的 View Controller ,并为它们创建了一个标识符以在我的自定义 View Controller 类中引用: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).

最佳答案

也许您正试图在 AppDelegate.m 中或您初始化页面 Controller 的任何地方加载名称错误的 nib。

否则您将错过创建 .xib 文件并将其命名为 NSPageController 的机会。创建 Cocoa Touch 类时,有一个复选框可以根据需要为您的类创建一个 xib 文件。

关于macos - 如何使用 NSPageController 在 NSViewController 之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28701022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com