ho fatto le seguenti operazioni:
- eliminare il file storyboard dal progetto
- Modificare info.plist:
Accedere al dizionario NSExtension, rimuovere questa chiave: NSExtensionMainStoryboard. Sostituiscilo con questa chiave NSExtensionPrincipalClass e aggiungi il tuo ViewController come valore, ad es. TodayViewController.
prima:
<key>NSExtension</key>
<dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widget-extension</string>
</dict>
dopo:
<key>NSExtension</key>
<dict>
<key>NSExtensionPrincipalClass</key>
<string>TodayViewController</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.widget-extension</string>
</dict>
- Se stai usando Swift, è necessario attivare "contenuto incorporato contiene il codice Swift" nelle impostazioni di generazione del bersaglio. Impostalo su SÌ.
- Inoltre ho dovuto aggiungere
@objc (TodayViewController)
nella classe TodayViewController (dopo le importazioni).
L'app dovrebbe essere eseguita ora. Ma c'erano altre due cose che dovevo fare:
- Creare una vista. Ovviamente non c'è nessuna vista creata automaticamente.
Quindi aggiungere queste righe:
override func loadView()
{
view = UIView(frame:CGRect(x:0.0, y:0, width:320.0, height:200.0))
}
- e impostare l'altezza del tuo widget nel metodo viewDidLoad:
self.preferredContentSize = CGSizeMake(0, 200)
Nota: questo deve essere nel dizionario NSExtension nel file info.plist per l'estensione. – xtravar
ha dovuto fare questo per farlo funzionare: http://stackoverflow.com/questions/24416003/writing-an-ios-8-share-extension-without-boardboard –