我已經得到了這些單元格,我已經設置了自定義背景顏色。背景色工作正常,當我選擇單元格,但是,當我向下滾動,備份,有兩種情況:所選的UITableViewCell背景顏色在滾動時發生變化
如果選擇不是很多細胞,就拿出來看的細胞有時會回來在選擇時使用默認的藍色。
如果大多數或所有的細胞都被選中,那麼外出的細胞就會回到預先存在的細胞中的一種顏色 - 即。我選擇所有單元格,向下滾動並返回,頂部的單元格與底部單元格(或至少其中一些單元格 - 其他單元格保留其自己的顏色)具有相同的顏色。
這裏是我有一個產生這的代碼:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *row = [tableView cellForRowAtIndexPath:indexPath];
UIView *backview = [[UIView alloc] initWithFrame:row.frame];
backview.backgroundColor = [colours objectAtIndex:indexPath.row];
row.selectedBackgroundView = backview;
}
這就是爲細胞所選擇的方法改變了顏色。在這裏創建的細胞:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"eventTypeID";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString *sEventType = [[self.eventTypes valueForKeyPath:@"name.text"] objectAtIndex:indexPath.row];
cell.textLabel.text = sEventType;
return cell;
}
而且每個單元的顏色都在這裏設置:
- (void)loadView {
colours = [[NSMutableArray alloc] init];
CGFloat red[] = {0.84,0.86,0.7,0.46,0.56,0.44,0.95,0.91,0.91,0.76,0.06,0.8,0.73,0.0,0.0,0.01,0.18,0.23,0.57,0.18};
CGFloat green[] = {0.12,0.01,0.07,0.17,0.32,0.18,0.49,0.49,0.78,0.61,0.48,0.85,0.85,0.28,0.38,0.53,0.23,0.36,0.32,0.24};
CGFloat blue[] = {0.34,0.5,0.2,0.53,0.55,0.31,0.18,0.18,0.12,0.27,0.14,0.1,0.49,0.1,0.37,0.49,0.4,0.41,0.55,0.40};
for (int i = 0; i < 20; i++) {
[colours addObject: [UIColor colorWithRed:red[i] green:green[i] blue:blue[i] alpha:1.0]];
}
//Get data from server and parse it
...
}
現在,我纔剛剛開始編程的iPhone,但我的猜測(這是一個百搭單順便說一句)是細胞正在cellForRowAtIndexPath
重新創建,雖然一些屬性得到保存(如標題...)自定義背景不是。
以前有沒有人遇到過這種行爲?如果是這樣,你是如何解決它的?
編輯:即使怪異行爲:有時,如果你向後滾動向下和向上,比人選擇背景色的「默認」的細胞可以追溯到它的自定義一個。行爲似乎是隨機的。
你在正確的軌道上:在cellForIndexPath細胞的顏色也應該「renwed」。現在我不在家裏的電腦上檢查我遇到過類似問題的項目。但是如果我記得正確的話,我必須在willDisplayCell中定義一個單元格的背景顏色:forRowAtIndexPath – 2012-02-24 15:46:17