2014-10-25 5 views
21

Ich habe einige Schwierigkeiten mit IB_DESIGNABLE in einem Pod.Live Rendering einer benutzerdefinierten Komponente mit IB_DESIGNABLE aus einer Pod-Abhängigkeit

Ich erstellte eine benutzerdefinierte Ansicht, die ich als IB_DESIGNABLE markiert und ein Beispielprojekt, das es verwendet. Keine Probleme bisher.

Das Problem tritt auf, wenn diese benutzerdefinierte Ansicht als Pod-Abhängigkeit hinzugefügt wird. Obwohl das Projekt erstellt und erfolgreich ausgeführt wird, tritt ein Fehler auf, wenn das Storyboard, das die benutzerdefinierte Ansicht verwendet, geöffnet wird. Der Live-Rendering-Prozess startet und versucht, die Ansicht lebt in Interface Builder zu zeigen, aber es funktioniert nicht mit dem folgenden Fehler:

enter image description here

Das ist schade, weil wir Live-Rendering verlieren, was ist, meiner Meinung nach, eine der die besten Eigenschaften von Xcode 6.

  • Cocoapods gem Version: 0.34.4
  • Xcode Version: 6.1 (6A1052d)

ich mit anderen Projekten versucht haben, die IB_DESIGNABLE und haben verwenden eine podspec:

  1. https://github.com/Eddpt/EAColourfulProgressView (Klasse: EAColourfulProgressView)
  2. https://github.com/hayashi311/HRButton (Klasse: HRButton)
  3. https://github.com/Estimote/iOS-Indoor-SDK (Klasse: ESTIndoorLocationView)

Someon e else hatte das gleiche Problem in Estimote - Indoor Location Error, aber die beschriebene Lösung bedeutet, Live Rendering-Funktionen zu verlieren.

Hat jemand in der Lage, eine IB_DESIGNABLE Komponente durch Cocoapods zu verwenden?

Fehler: „failed Designables von Pfad (null) laden“

+0

Ich habe das gleiche Problem, wenn die Klasse mit IB_DESIGNABLE in einem abhängigen Projekt ist (z. B. Framework-Projekt) – Neovov

+1

Ich habe das gleiche Problem auch. Wenn "MyCustomView" in meinem Projekt ist, funktioniert es großartig, aber wenn diese Klasse im Pods-Projekt ist, funktioniert es nicht mehr. Ich bekomme den gleichen Fehler: "Designables konnte nicht vom Pfad (null) geladen werden" (Ich schreibe hier, um diesen Thread leichter auf Google zu finden!). – QLag

+0

Eine Chance, dass die designable Klassen in einem Framework im Hauptprojekt importiert werden, würde es beheben? Ich werde es versuchen und darüber berichten. –

Antwort

19

Dies wurde in der neuesten Version von Cocoapods (0.36.0.beta.1) behoben.

diese Version zu installieren:

[sudo] gem install cocoapods --pre

Mehr Informationen über Cocoapods mit Rahmen here

Um die Error: "failed to load designables from path (null)" zu beheben:

platform :ios, '7.0' 

use_frameworks! 

target 'test' do 
pod 'EAColourfulProgressView', '~> 0.1.0' 
end 

target 'testTests' do 

end 

hinzufügen use_frameworks! zu Ihnen Podfile.

+3

Dies funktioniert nicht für iOS7 – k06a

+0

Ja, das ist leider richtig. Dynamische Frameworks sind nur in iOS 8 verfügbar und es scheint keine Möglichkeit zu geben, 'IB_DESIGNABLE' mit statischen Bibliotheken arbeiten zu lassen. Sie könnten die Quelldateien für die fragliche Abhängigkeit ziehen und ablegen, anstatt cocaapods zu verwenden, wenn Sie wirklich wollen, dass IB_DESIGNABLE funktioniert – Edgar

+0

Ich hoffe, dass dieser schreckliche Fehler in Xcode 7 behoben wird :) – k06a

0

Bei der Angabe Ihrer benutzerdefinierte Klasse im Identity Inspector, sind Sie aus dem Modul dieser Klasse Angabe geladen werden soll? Das Modul sollte der Name der Bibliothek sein, aus der die Klasse stammt.

+1

Module müssen nur angegeben werden, wenn Sie Swift verwenden, nicht mit Objective-C. Mein Beispielprojekt verwendet Objective-C. – Edgar

+1

Hat Ihre Bibliothek auch Abhängigkeiten von anderen Frameworks, die über @rpath lokalisiert werden müssen? Wenn dies der Fall ist, sollten Sie Systemprotokolle in der Konsole bemerken, die den Fehler zeigen, der beim Auflösen der Abhängigkeiten aufgetreten ist. – Dalzhim

0

Ich löste mein Problem mit use_frameworks! auf der PodFile, in der ersten Zeile. (Vergessen Sie nicht die !)

IBInspectable Eigenschaften müssen dynamisch sein, also fragt es nach einer dynamischen Verknüpfung der Bibliothek. Wenn Sie die obige Zeile verwenden, sobald Sie die Klasse eines Steuerelements festgelegt haben, wird das Framework erstellt und verknüpft, wodurch diese Bindungsprobleme gelöst werden. Als ich auf Beta umstieg, hörte Parse auf zu arbeiten.

Ich hoffe, es hilft jemandem.