2014-04-24 21 views
8

Ich habe einen UiViewController, in den ich eine Tabellenansicht gezogen habe und alle benötigten Verbindungen wie Delegate und Datenquelle eingefügt habe und es funktioniert gut, alles ist großartig. Ich habe versucht, einen Hintergrund zu dieser Tabelle Ansicht zu setzen, und das bekam ich diese seltsamen FehlerCUICatalog: Ungültiger Objektname:, oder ungültiger Skalierungsfaktor: 2.000000

CUICatalog: Invalid asset name supplied: , or invalid scale factor: 2.000000 

ich den Hintergrund mit dieser Methode zu setzen versucht:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mypredictions_bg.png"]]; 
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView; 

Was bin ich? Ich überprüfte den Namen des Bildes ist korrekt

+3

ist es eine Aussage wie '[UIImage imagenamed: @ ""]; 'in Ihrem Code? da die Warnung kommt, wenn Sie versuchen, ein Bild mit '[UIImage imageNamed: myImage]' zu laden, aber 'iOS' kein Bild mit dem Namen' myImage' gefunden – Buntylm

+0

@BuntyM ich überprüft alles, was die Dateien dort..ich habe versucht zu laden auf die gleiche Weise, aber in einem Tableview-Controller hat es perfekt funktioniert, aber in meinem Fall wird es nicht –

Antwort

0

Wenn Ihr Bildtyp PNG ist, müssen Sie es Ende des Bilddateinamens nicht ersetzen, weil Standard-XCode-Bildtyp bereits PNG ist. Versuche dies;

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"mypredictions_bg"]]]; 
0

In meinem Fall wurde auf die falsche ViewController verwiesen. Ich richtete an den ViewController, der den Inhalt eines page-basierten ViewControllers behandelte, anstatt eine Verbindung zu dem viewController herzustellen, in dem der PageContentViewController sowie der PageViewController verknüpft waren. Hoffe das hilft.

2

In meinem Fall habe ich Kategorie für UIImageView und UITextfied, In Dass manchmal brauche ich nicht ein Bild, dass die Zeit, die ich geliefert @ „“ (dh Null-String), es tritt Problem nach einiger R & DI Liefern nur "Nil" statt @ "", löst es meine Warnung, also tritt diese Art der Warnung möglicherweise auf, während kein richtiges Bild erhalten wird.

3

Ich machte eine Debug-Klasse, die ImageNamed swizzles, so dass Sie einen Debug-Trace bekommen können, wo dies passiert.

Sie müssen JRSwizzle installieren, um es zu verwenden.

https://github.com/rentzsch/jrswizzle

#import "UIImageDebugger.h" 
#import "JRSwizzle.h" 


@implementation UIImageDebugger 

+ (void)startDebugging 
{ 
    static dispatch_once_t once; 

    dispatch_once(&once, ^{ 

     NSError *error=NULL; 

     [UIImage jr_swizzleClassMethod:@selector(imageNamed:) 
         withClassMethod:@selector(hs_xxz_imageNamed:) 
           error:&error]; 


     if (error) 
     { 
      NSLog(@"error setting up UIImageDebugger : %@",error); 
     } 
     else 
     { 
      NSLog(@"!!!!!!!!!!!!!!!!!!!! UIImage swizzle in effect - take this out for release!!"); 
     } 


    }); 

} 

@end 

@interface UIImage (UIViewDebugger) 

+ (UIImage*)hs_xxz_imageNamed:(NSString *)name; 

@end 


@implementation UIImage (UIViewDebugger) 

+ (UIImage*)hs_xxz_imageNamed:(NSString *)name 
{ 
    if (!name) 
    { 
     NSLog(@"null image name at \n%@",[NSThread callStackSymbols]); 
    } 

    UIImage *image=[self hs_xxz_imageNamed:name]; 

    if (!image) 
    { 
     NSLog(@"failed to make image at \n%@",[NSThread callStackSymbols]); 
    } 

    return image; 
} 

@end 
+4

Sie müssen nicht swizzle Methoden können Sie einen Haltepunkt bei dieser Methode festlegen und überprüfen Sie die Variablen. Klicken Sie im Breakpoint-Panel (cmd + 7) auf das kleine + am unteren Rand und fügen Sie einen symbolischen Breakpoint mit dem Namen "+ [UIImage imageNamed:]" hinzu. Sie können sogar Bedingungen festlegen, um Befehle an lldb zu brechen und auszugeben, wenn der Unterbrechungspunkt erreicht wird. – puppybits

+2

@puppybits - wie würdest du die Bedingungen festlegen? Ich bin vertraut mit der Einrichtung von Bedingungen im Rahmen meines eigenen Codes - aber mit dem symbolischen Haltepunkt bin ich nicht sicher, wie ich auf die Eingabe (Name) oder den Rückgabewert zugreifen, um sie abzufragen. –

+0

@ConfusedVorlon, das ist großartig. Dies wurde in das Projekt integriert, damit wir alle Orte finden können, an denen wir versehentlich Ressourcendateien aus dem Projekt entfernen. –

Verwandte Themen