erstellen Ich habe die folgenden Schritte:
- die Storyboard-Datei aus dem Projekt löschen
- Ändern Sie die info.plist:
Gehen Sie zum NSExtension Dictionary, entfernen Sie diesen Schlüssel: NSExtensionMainStoryboard. Ersetzen Sie es durch diesen Schlüssel NSExtensionPrincipalClass und fügen Sie Ihren ViewController als Wert hinzu, z. HeuteViewController.
vor:
<key>NSExtension</key>
<dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widget-extension</string>
</dict>
nach:
<key>NSExtension</key>
<dict>
<key>NSExtensionPrincipalClass</key>
<string>TodayViewController</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widget-extension</string>
</dict>
- Wenn Sie Swift verwenden, müssen Sie "Embedded Inhalt Enthält Swift Code" in den Build-Einstellungen des Ziels ermöglichen. Setze es auf JA.
- Zusätzlich musste ich
@objc (TodayViewController)
in meiner TodayViewController-Klasse hinzufügen (nach dem Import).
Die App sollte jetzt ausgeführt werden. Aber es gab zwei andere Dinge, die ich tun musste:
- Erstellen Sie eine Ansicht. Offensichtlich wird keine Ansicht automatisch erstellt.
So fügen Sie diese Zeilen:
override func loadView()
{
view = UIView(frame:CGRect(x:0.0, y:0, width:320.0, height:200.0))
}
- Und stellen Sie die Höhe Ihres Widgets in Ihrer viewDidLoad Methode:
self.preferredContentSize = CGSizeMake(0, 200)
Hinweis: Dies muss unter dem NSExtension-Wörterbuch in der Datei info.plist für die Erweiterung stehen. – xtravar
musste dies tun, damit es funktioniert: http://stackoverflow.com/questions/24416003/writing-an-ios-8-share-extension-without-a-storyboard –