swift - NSPageController 快速示例

标签 swift macos cocoa

我尝试使用 NSPageController 创建向导。但我不明白我需要在委托(delegate)方法中返回什么。我将 navigateForward 附加到我的按钮,当我点击它时,我得到:

[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]

class BoardAligmentPageController: NSPageController, NSPageControllerDelegate {

    var orderedViewControllers: [NSViewController] = {
        return [NSStoryboard(name: "Main", bundle:nil).instantiateController(withIdentifier: "BoardAligmentStep1ViewController") as! NSViewController,
                NSStoryboard(name: "Main", bundle:nil).instantiateController(withIdentifier: "BoardAligmentStep2ViewController") as! NSViewController,
                NSStoryboard(name: "Main", bundle:nil).instantiateController(withIdentifier: "BoardAligmentStep2ViewController") as! NSViewController,
                ]
    }()


    override func viewDidLoad() {
        super.viewDidLoad()

        delegate = self

        self.arrangedObjects = orderedViewControllers
    }


    func pageController(_ pageController: NSPageController, identifierFor object: Any) -> String {

        return "\(self.selectedIndex)"
    }

    func pageController(_ pageController: NSPageController, viewControllerForIdentifier identifier: String) -> NSViewController {
        return orderedViewControllers[Int(identifier)!]
    }
}

最佳答案

看起来您的 orderedViewControllers 属性实际上并未设置(因为您遇到了“越界”错误)。

不要做那个属性,试着按需做:

func pageController(_ pageController: NSPageController, identifierFor object: Any) -> String {

    print("\(self.selectedIndex)")

    switch(self.selectedIndex)
    {
    case 0 :
        return "BoardAligmentStep1ViewController"
    case 1 :
        return "BoardAligmentStep2ViewController"
    case 2 :
        return "BoardAligmentStep3ViewController"
    default :
        return "SomeDefaultViewController"
    }
}

func pageController(_ pageController: NSPageController, viewControllerForIdentifier identifier: String) -> NSViewController {
    return self.storyboard?.instantiateController(withIdentifier: identifier) as! NSViewController
}

关于swift - NSPageController 快速示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40802652/

相关文章:

ios - AlamofireImage 没有释放内存

objective-c - NSString的内存问题

objective-c - FMDB - 无法从 Cocoa 修改数据库

ios - 使用现有类的 Realm ?

ios - 从坐标集中查找线性回归方位没有给出所需的结果

cocoa - NSArrayController 初始化

macos - MacOS X 10.11.3 中的 F# 目录和路径

cocoa - 应用程序似乎正在泄漏内存

ios - XCUIElement - 获取图像值

macos - 我无法从 Visual Studio 2015 使用 Xamarin Mac Agent 连接到 Mac