2014-04-24 52 views
8

我有一個UiVIewController,其中拖動了一個表視圖並放置了所有需要的連接,如委託和數據源,它工作得很好,一切都很好。我試圖設置一個背景,這個表視圖,而且我得到這個奇怪的錯誤CUICatalog:提供的資產名稱無效,或無效的比例因子:2.000000

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

我試圖用這個方法來設置背景:

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

self.tableView.backgroundView = tempImageView; 

我在想什麼?我檢查了圖片的名稱是否正確

+3

是有像任何聲明'[UIImage的imagenamed:@ 「」];'在你的代碼?因爲這是當你嘗試使用'[UIImage imageNamed:myImage]加載圖像'但是'iOS'沒有找到名爲'myImage'的圖像時警告來到 – Buntylm

+0

@BuntyM我檢查了所有文件都在那裏..我試圖加載同樣的方式,但在tableviewcontroller它完美的工作,但在我的情況下,它不會 –

回答

0

如果您的圖片類型是PNG,您不必將其替換爲圖片文件名的末尾,因爲默認的XCode圖片類型已經是png。嘗試這個;

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

在我的情況,是指向錯誤的viewController。 我正在處理基於ViewController的頁面內容的viewController,而不是鏈接到pageContentViewController以及PageViewController鏈接到的viewController。希望這可以幫助。

2

在我的情況下,我做了類別的UIImageView和UITextfied, 在那,有時我不需要的圖像,到時候我提供@「」(即空字符串),它出現問題,一些後R & DI提供只是「零」而不是@「」,它解決了我的警告,所以也許這種類型的警告發生,但沒有得到正確的圖像。

3

我做了一個調試類,調試imageNamed,以便您可以得到一個調試跟蹤發生這種情況。

您需要安裝JRSwizzle才能使用它。

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

你不需要調試方法,你可以設置一個斷點在該方法,並檢查變量。在斷點面板(cmd + 7)中,單擊底部的小號+,並添加名稱爲「+ [UIImage imageNamed:]」的符號斷點。您甚至可以設置條件來中斷並在命中斷點時將命令輸出到lldb。 – puppybits

+2

@ puppybits - 你會如何設定條件? 我熟悉在我自己的代碼的上下文中設置條件 - 但帶有符號斷點,我不知道如何訪問輸入(名稱)或返回值來查詢它們。 –

+0

@ConfusedVorlon,這太好了。將其納入該項目,以幫助我們在錯誤地從項目中刪除資源文件時找到所有的地方。 –

相關問題