台风:从故事板注入控制器 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
我在 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