2010-03-07 52 views
0

好吧,所以我有一個UITableView,我想要應用主題。我想我已經想出瞭如何去做。我所做的是當我的視圖加載時,我調用一個名爲「[self getValues]」的函數。以下是它的外觀:UIColor函數崩潰

- (void)getValues { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *theme = [defaults valueForKey:@"theme"]; 
    fileName = [NSString stringWithFormat:@"%@.png", theme]; 
    textColor = [self getTextColor]; 
} 

fileName和textColor變量在標頭中定義爲NSString和UIColor。 fileName用於獲取我分配給單元格的背景圖像的文件名。我將「textColor」分配給函數[self getTextColor]的輸出。這是那個功能:

- (UIColor*)getTextColor { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *theme = [defaults valueForKey:@"theme"]; 

    NSArray *themes = [NSArray arrayWithObjects:@"Crash Love", @"DECEMBERUNDERGROUND", @"Sing the Sorrow", nil]; 
    NSArray *textColors = [NSArray arrayWithObjects:gold, [UIColor blackColor], [UIColor whiteColor], nil]; 

    int r; 
    UIColor *clr; 

    for (NSString *element in themes) { 
     r += 1; 

     if ([element isEqualToString:theme]) { 
      clr = [textColors objectAtIndex:r]; 
      break; 
     } 
    } 

    return clr; 
} 

但是由於某種奇怪的原因,上面的函數崩潰了。我確實知道函數中有某些東西是導致崩潰的原因,因爲當我刪除我稱之爲函數的行時,應用程序工作正常。我使用NSLog來查看我的應用程序獲得的主題變量,它是「1主題」還是其他,所以這不是問題。

任何想法?

回答

0

這個怎麼樣,而不是:

- (UIColor*) getTextColor 
{ 
    NSDictionary* themeColors = [NSDictionary dictionaryWithObjectsAndKeys: 
     [UIColor redColor], @"Theme1", 
     [UIColor blackColor], @"Theme2", 
     [UIColor whiteCOlor], @"Theme3", 
     nil]; 

    return [themeColors objectForKey: [[NSUserDefaults standardUserDefaults] valueForKey:@"theme"]]; 
} 

的顏色都存儲在一個字典,讓您可以簡單地通過名字進行查找。如果你經常這樣稱呼,那麼你也可以考慮使themeColors變量爲static,並且只初始化它一次。否則我不會打擾。

+0

這很好用!萬分感謝! – user288225 2010-03-07 14:39:17