Zrobiłem następujące kroki:
- usunąć plik storyboard z projektu
- Modyfikuj info.plist:
Przejdź do słownika NSExtension, usuń ten klucz: NSExtensionMainStoryboard. Zastąp go tym kluczem NSExtensionPrincipalClass i dodaj swój ViewController jako wartość, np. TodayViewController.
przed:
<key>NSExtension</key>
<dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widget-extension</string>
</dict>
po:
<key>NSExtension</key>
<dict>
<key>NSExtensionPrincipalClass</key>
<string>TodayViewController</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widget-extension</string>
</dict>
- Jeśli używasz Swift, trzeba włączyć "osadzonej zawartości Zawiera kod SWIFT" w ustawieniach kompilacji celu. Ustaw na TAK.
- Dodatkowo musiałem dodać
@objc (TodayViewController)
w mojej klasie TodayViewController (po imporcie).
Aplikacja powinna teraz działać. Ale musiałem jeszcze zrobić dwie inne rzeczy:
- Utwórz widok. Oczywiście nie ma automatycznie utworzonego widoku.
więc dodać te linie:
override func loadView()
{
view = UIView(frame:CGRect(x:0.0, y:0, width:320.0, height:200.0))
}
- i ustawić wysokość widżetu w swojej metodzie viewDidLoad:
self.preferredContentSize = CGSizeMake(0, 200)
Uwaga: To musi być w słowniku NSExtension w info.plist dla rozszerzenia. – xtravar
musiał to zrobić, aby działało: http://stackoverflow.com/questions/24416003/writing-an-ios-8-share-extension-without-a-storyboard –