2014-04-24 10 views
8

Mam kontroler UiVIewController, w którym przeciągnąłem widok tabeli i wstawiłem wszystkie potrzebne połączenia, takie jak delegat i źródło danych, i wszystko działa dobrze, wszystko jest świetnie. Próbowałem ustawić tło do tego widoku tabeli, a mam ten dziwny błądCUICatalog: Podano niepoprawną nazwę zasobu: lub nieprawidłowy współczynnik skali: 2.000000

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

próbowałem ustawić tło za pomocą tej metody:

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

self.tableView.backgroundView = tempImageView; 

Czego mi brakuje? Sprawdziłem, czy nazwa obrazu jest poprawna

+3

jest jakaś wypowiedź jak '[UIImage imageNamed: @ ""];' w kodzie? jak to pojawia się ostrzeżenie, gdy próbujesz załadować obraz z '[UIImage imageNamed: myImage]', ale 'iOS' nie znalazł obrazu o nazwie' myImage' – Buntylm

+0

@BuntyM Sprawdziłem wszystko, co pliki tam są ... Próbowałem załadować w ten sam sposób, ale w kontrolerze tableview działało idealnie, ale w moim przypadku nie będzie to –

Odpowiedz

0

Jeśli typem obrazu jest png, nie trzeba go zamieniać na koniec nazwy pliku obrazu, ponieważ domyślnym typem obrazu XCode jest już png. Spróbuj tego;

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

W moim przypadku był skierowany do niewłaściwego viewController. Skierowałem do viewController, który obsłużył zawartość strony ViewController opartej na stronie, zamiast łączyć się z viewController, w którym połączono pageContentViewController oraz PageViewController. Mam nadzieję że to pomoże.

2

w moim przypadku zrobiłem kategorię UIImageView i UITextfied, na tym, że czasami nie muszę obraz, że czas mi dostarczony @ "" (tzn Null string), to pojawia się problem, po pewnym R & DI Podaj tylko "zero" zamiast @ "", to rozwiązuje moje ostrzeżenie, więc może ten typ ostrzeżenia pojawia się, gdy nie otrzymasz odpowiedniego obrazu.

3

Zrobiłem klasy debugowania, która swizzles imageNamed, dzięki czemu można uzyskać śledzenia debugowania, gdzie to się dzieje.

Musisz zainstalować JRSwizzle, aby z niego korzystać.

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

Nie musisz używać metody "swizzle", możesz ustawić punkt przerwania w tej metodzie i sprawdzić zmienne. W panelu punktu przerwania (cmd + 7) kliknij małą + u dołu i dodaj symboliczny punkt przerwania o nazwie "+ [UIImage imageNamed:]". Można nawet ustawić warunki, aby łamać i wysyłać polecenia do lldb, gdy zostanie uderzony punkt przerwania. – puppybits

+2

@puppybits - w jaki sposób ustawisz warunki? Jestem zaznajomiony z ustawianiem warunków w kontekście mojego własnego kodu - ale z symbolicznym punktem przerwania, nie jestem pewien, w jaki sposób uzyskuję dostęp do danych wejściowych (nazwa) lub wartości zwracanej, aby je wysłać. –

+0

@ConfusedVorlon, to jest świetne. Włączono to do projektu, aby pomóc nam znaleźć wszystkie miejsca, gdy przez pomyłkę usuwamy pliki zasobów z projektu. –