如何在iOS8上以程式設計方式建立Today widget,沒有故事板?
我試圖刪除故事板檔案和相關的Info.plist條目,但這個時間延長停止工作;它甚至不能從XCode啟動.
操作無法完成. (LaunchServicesError錯誤0.)
正常應用程式(包含應用程式)很容易,因為我們看到它是入門點和應用程式委託,但是如何在擴充套件上呢?
我做了以下步驟:
>從您的專案中刪除故事板檔案
>修改info.plist:
轉到NSExtension字典,刪除此鍵:NSExtensionMainStoryboard.用這個金鑰NSExtensionPrincipalClass替換它,並新增你的ViewController作為值,例如TodayViewController.
之前:
<key>NSExtension</key> <dict> <key>NSExtensionMainStoryboard</key> <string>MainInterface</string> <key>NSExtensionPointIdentifier</key> <string>com.apple.widget-extension</string> </dict>
後:
<key>NSExtension</key> <dict> <key>NSExtensionPrincipalClass</key> <string>TodayViewController</string> <key>NSExtensionPointIdentifier</key> <string>com.apple.widget-extension</string> </dict>
>如果您使用Swift,則必須在目標的“構建設定”中啟用“嵌入式內容包含Swift程式碼”.將其設定為YES.
>另外我必須在我的TodayViewController類(匯入之後)新增@objc(TodayViewController).
該應用程式應該執行.但還有另外兩件事我不得不做:
>建立檢視.顯然沒有自動建立檢視.
所以新增這些行:
override func loadView() { view = UIView(frame:CGRect(x:0.0, y:0, width:320.0, height:200.0)) }
>並在您的viewDidLoad方法中設定小部件的高度:self.preferredContentSize = CGSizeMake(0,200)
http://stackoverflow.com/questions/26037321/how-to-create-a-today-widget-programmatically-without-storyboard-on-ios8