2016-05-25 11 views
0

Ich habe mich gefragt, wie man am besten einen Cocoapods Pod mit UI liefert. Ich brauche die Benutzer meines Pods in der Lage, eine Instanz eines Einstiegspunkt-View-Controllers zu initialisieren und dann in ihrer App zu präsentieren (zum Beispiel mit presentViewController:animated:completion).Liefere einen Cocoapods Pod mit UI

Ich sehe drei Möglichkeiten:

  1. Bündelung .xib Dateien für jede UI (dies wird mir auch .xib Dateien und nicht intern verwenden Storyboards machen). Auf diese Weise initialisiert der Benutzer den ersten View-Controller und von dort aus übernehme ich die Kontrolle.
  2. Bündeln Sie ein ganzes Storyboard, aber wie erwarten Sie dann, dass der Benutzer es in seine App integriert?
  3. Erstellen Sie meine Benutzeroberfläche programmatisch in meinem Pod (wie ich sah Braintree tun in ihrem SDK).

Irgendwelche Gedanken?

+0

Ich würde die Benutzeroberfläche in Code machen. Immer. Nicht nur in einem Pod. – dasdom

+0

Wirklich? mit Einschränkungen und allem ??? – mllm

+1

Sicher. Kein Problem. Ich mache alle meine UIs in Code. – dasdom

Antwort

1

Alle diese Optionen funktionieren einwandfrei. Wenn Sie wählen xibs oder Storyboards verwenden Sie merken müssen, um diese Dateien in Ihrem podspec sind etwa so:

s.resources = "Project/**/*.{png,jpeg,jpg,gif,storyboard,xib,lproj,xcdatamodeld,plist,xcassets}" 

auch eine Sache, wo sie nach Ihrer pod des Bundles zugreift. Es wird nicht mehr die NSBundle.mainBundle() sein, da Ihr Pod keinen Zugriff auf das Paket des Hauptprojekts hat. Stattdessen müssen Sie auf das Bundle für die Klasse zugreifen, in der Sie arbeiten. let podBundle = NSBundle(forClass: self)

+0

Wichtiger Hinweis zum Bundle! Wie erwarten Sie, dass der Benutzer meines Pods integriert wird, wenn ich ein Storyboard ausliege? Oder wie lade ich meinen 'Einstiegspunkt'-View-Controller aus einem Storyboard? – mllm

+1

Es hängt davon ab, was Sie versuchen zu tun. Wenn Sie beispielsweise nur versuchen, ihnen View-Controller zu übergeben, können Sie öffentliche Methoden erstellen, um sie abzurufen, und dann innerhalb dieser Methoden den View-Controller aus Ihrem Bundle instanziieren und an sie zurückgeben. So benötigt der Benutzer/die App den View-Controller, die Benutzer/App-Anfragen den Controller aus Ihrem Pod. Ihr Pod instanziiert den View-Controller und gibt ihn an den Benutzer/die App zurück. –