xcode 6 IB_DESIGNABLE - nicht laden von Ressourcen aus bundle im Interface builder

Ich versuche, ein benutzerdefiniertes Steuerelement, das updates live im Interface Builder mit der neuen IB_DESIGNABLE beschriebene option hier.

- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();

CGRect myFrame = self.bounds;
CGContextSetLineWidth(context, 10);
CGRectInset(myFrame, 5,5);
[[UIColor redColor] set];
UIRectFrame(myFrame);

NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath;

plistPath = [bundle pathForResource:@"fileExample" ofType:@"plist"];
UIImage *tsliderOff = [UIImage imageNamed:@"btn_slider_off.png"];

[tsliderOff drawInRect:self.bounds];
}

Wenn ich in den simulator, bekomme ich einen roten Kasten mit meinem Bild in der Mitte (wie erwartet):
xcode 6 IB_DESIGNABLE - nicht laden von Ressourcen aus bundle im Interface builder

Aber wenn ich versuche mit dem Interface-Builder, es zeigt nur, wie ein rotes Feld (kein Bild in der Mitte):
xcode 6 IB_DESIGNABLE - nicht laden von Ressourcen aus bundle im Interface builder

Wenn ich debug es: Editor->Debug-Selected Views, es zeigt, dass etwas geladen aus dem bundle ist gleich null. Die plistPath und tsliderOff beide erscheinen als null.

Machte ich sicher, dass btn_slider_off.png wurde in die Ziele->myFrameWork->Build-Phasen->Copy Bundle Resources.

Jede Idee, warum der Interface Builder nicht sieht, dass die png-Datei während der Bearbeitung, zeigt aber ok, wenn ausgeführt? "Erstellen einer Benutzerdefinierten Ansicht, dass die Macht im Interface Builder" ist ein wenig eingeschränkt, wenn ich nicht laden kann auch keine Bilder zu Rendern...


Bearbeiten, basiert auf der Lösung von rickster

rickster wies mich auf die Lösung - das problem ist, dass die Dateien nicht live im mainBundle, in der Sie Leben [NSBundle bundleForClass:[self class]]; Und es scheint, dass [UIImage imageNamed:@"btn_slider_off.png"] verwendet automatisch mainBundle.

Der folgende code funktioniert!

#if !TARGET_INTERFACE_BUILDER
NSBundle *bundle = [NSBundle mainBundle];
#else
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
#endif
NSString *fileName = [bundle pathForResource:@"btn_slider_off" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];
[image drawInRect:self.bounds];
  • Tut dies immer noch gilt für Xcode 6.0.1, IB_DESIGNABLE Klassen, die sich nicht in einen Rahmen? Ich kann es nicht funktionieren. Was ist es schlimmer, ich kann nicht Debuggen der Ansicht, wenn ich versuche zu Debuggen mit Haltepunkt Xcode stürzt mit dem spinning beach ball of death.
InformationsquelleAutor arinmorf | 2014-07-07
Schreibe einen Kommentar