iOS - Laden von Xib aus dem Bundle im Documents-Verzeichnis

8

Ich habe daran gearbeitet, "benutzerdefinierte skinfähige" Interfaces für meine iOS-App zu entwickeln, indem ich xibs bündle und Pakete herunterlade und die xibs in diese Bundles lade.

Ich habe die sehr nützlichen Anweisungen hier verfolgt, damit es fast funktioniert.

lädt NSBundle-Dateien auf iOS

Ich habe das Paket heruntergeladen und entpackt und kann die XIB-Datei sehen. Ich habe keinen der TestViewController-Code in dem Beispiel verwendet, sondern mache dies stattdessen beim Erstellen des View-Controllers mit dem gerade heruntergeladenen xib:

%Vor%

Wenn ich diesen View-Controller auf meinen Stack schiebe, erhalte ich folgende Fehlermeldung:

*** Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInternalInconsistencyException', Grund: 'NIB konnte nicht im Paket geladen werden:' NSBundle (noch nicht geladen) 'mit dem Namen' CustomDownloadedXib ''

Das Problem scheint zu sein, dass mein Bündel "noch nicht geladen" ist. Ich habe versucht, mein Bündel zu laden, indem ich Folgendes anrufe:

%Vor%

aber das hilft nicht.

Ist meine Herangehensweise hier falsch? Das scheint der intuitive Weg zu sein.

Vielen Dank im Voraus!

    
Mark 24.06.2011, 04:44
quelle

4 Antworten

3

Folgen Sie den Anweisungen hier:

lädt NSBundle-Dateien auf iOS

Ich habe gerade das Bündel falsch erstellt!

Sie müssen das Paket in Xcode erstellen, denn wenn nicht, wird es nicht geladen. Um ein neues Ziel zu Ihrem Projekt hinzuzufügen, wählen Sie Framework & amp; Bibliothek - & gt; Bündeln Sie und verbinden Sie zu Core Foundation. Fügen Sie dann die XIBs hinzu, die Sie in das Web zum Ziel hochladen möchten. Ziel erstellen, im Finder anzeigen, komprimieren und hochladen!

    
Mark 28.06.2011, 00:39
quelle
5

Wenn ein Paket nicht richtig erstellt wird, wird es nicht geladen. Um ein richtiges Paket zu erstellen, folgen Sie den Schritten zum Erstellen eines Pakets:

  1. Fügen Sie ein neues Ziel hinzu, indem Sie eine Vorlage namens Bundle unter OS X - & gt; Rahmen & amp; Bibliotheken.

  2. Wählen Sie das neu erstellte Ziel aus und ändern Sie BaseSDK von OSX in das neueste iOS.

  3. Fügen Sie .xibs, Bilder oder andere Ressourcen hinzu, die Sie in Bundle in Build Phrases verwenden möchten - & gt; Kopiere Bundle-Ressourcen.

  4. Fügen Sie CoreFoundation-Framework in Build-Phrasen hinzu - & gt; Verknüpfen Sie Binärdateien mit Bibliotheken.

  5. Kompilieren Sie das Ziel, indem Sie ein iOS-Gerät auswählen.

  6. Speichern Sie das neu erstellte Paket aus dem Produktverzeichnis an einer bestimmten Stelle.

Kopieren Sie das Paket nun in Ihr Hauptprojekt. Laden Sie ein Bündel mit dem folgenden Code:

%Vor%

Sie sind jetzt mit dem neuen Paket festgelegt.

    
Dharmesh Siddhpura 28.03.2015 12:50
quelle
0

Auszug aus dem Resource Programming Guide :

  

In UIKit können Anwendungen nib-Dateien laden nur von ihrem Hauptbündel ..

Klingt nicht so, als könnten Sie tun, was Sie tun wollen. Oder zumindest, Apple will nicht, dass du es tust. Sie können natürlich, laden immer .bundle mit Bildern und als UIImage oder ähnlich zu laden, und dann die „aktive“ Haut in ein bekanntes Verzeichnis speichern, die das Verzeichnis der App sucht immer die Bilder zu verwenden, wenn Anzeige der Schnittstelle die Haut ändern entspricht die Bild Ressourcen auf diesem Weg mit denen von einem heruntergeladenen Bündel zu ersetzen.

    
darvids0n 24.06.2011 05:00
quelle
0

Nach einiger Zeit habe ich herausgefunden, dass dies ein häufiges Problem beim Laden der Ressourcen über die Bibliothek ist. Mir fehlte der Schritt zum Hinzufügen von "CoreFramework" zum Verknüpfen mit dem Ressourcenpaket, und es wurde auch nicht in den Clientanwendungsordner kopiert. Mit diesen Schritten können Sie das Ressourcenpaket entsprechend laden. # dsidhapuras Hinweis half mir, diese Probleme zu identifizieren.

    
Yoku 03.06.2015 20:30
quelle

Tags und Links