台风:从故事板注入控制器 OS X

Typhoon: Injecting controllers from storyboard OS X

我在 Xcode 中有一个干净的 OS X 项目(OS X,Swift,故事板)。 Info.plist 具有以下配置

这是 MyAssembly.sift

中视图控制器的配置
public dynamic func viewController() -> AnyObject {
    return TyphoonDefinition.withClass(ViewController.self){
        (definition: TyphoonDefinition!) in
            definition.injectProperty("name", with: "TEST INJECTED")
    }
}

这是我的 ViewController.swift:

import Cocoa

@objc
class ViewController: NSViewController {
    var name:String?
}

我在视图上添加了 NSTextField 并将其值绑定到 ViewController 的 name 属性。

根据文档,它应该可以工作,但实际上没有。

当我在 AppDelegate.applicationDidFinishLaunching 方法中尝试 print(NSStoryboard(name: "Main", bundle: NSBundle.mainBundle())) 时,它打印为 <NSStoryboard: 0x600000001280>,因此,它不是 TyphoonStoryboard 实例。

如果我像这样将 typhoonKey 添加到 ViewController 上的用户定义的运行时属性中

打印错误消息 "Failed to set (typhoonKey) user defined inspected property on (Typhon_Test_Delete.ViewController): [ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key typhoonKey."。

知道我做错了什么吗?

可能是台风正在寻找 UIMainStoryboardFile 但在这种情况下我们有 NSMainStoryboardFile?

你说得对,Typhoon 目前不提供 OSX 故事板集成,仅 iOS。 iOS,台风:

  • 在启动时检查应用程序 plist 中的 TyphoonConfig。如果找到,连同 Storyboard 详细信息 (UIMainStoryboardFile),那么它将检测应用程序以确保此 Storyboard 是 TyphoonStoryboard 的实例。

此 OSX 支持的工作已开始,但由于需求很少而未完成。完成这件事并不是什么大事。

在此期间,您可以:

  • 手动创建 TyphoonStoryboard 实例并使用它。
  • 实例化后调用[factory inject:controller]

台风问题"Support NSStoryboard on OSX" https://github.com/appsquickly/Typhoon/issues/558