2015-12-17 87 views
2

我在Xcode(OS X,Swift,Storyboards)中有一個乾淨的OS X項目。 Info.plist中有如下配置颱風:從storyboard OS X注入控制器

enter image description here

這裏是視圖控制器的配置在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這樣

enter image description here

的錯誤消息「無法設置(typhoonKey)用戶定義的檢查上(Typhon_Test_Delete.ViewController)屬性:[ setValue:forUndefinedKey:]:該類不是關鍵字值TyphoonKey的密碼值。「打印。

任何想法我做錯了什麼?

可能是颱風正在尋找UIMainStoryboardFile但在這種情況下,我們有NSMainStoryboardFile

回答

1

你是對的颱風目前不提供OSX故事板集成,只有iOS。在iOS上,颱風:

  • 在啓動時檢查應用程序中的TyphoonConfig。如果發現了故事板細節(UIMainStoryboardFile),那麼它將檢測應用程序以確保此故事板是TyphoonStoryboard的一個實例。

該OSX支持已開始工作,但由於需求不大,因此未完成。完成這項工作並不是一項重大任務。

在此期間,你既可以:

  • 手動創建TyphoonStoryboard的實例,並使用它。
  • 實例化後調用[factory inject:controller]
+0

我注意到'TyphoonStoryboard'不可用(可能只是斯威夫特?)。 –

+0

嗯。是的,它必須從Swift頭文件中丟失。似乎這裏有一些工作要做。 –