2014-07-06 168 views
0

我試圖讓分隔單元具有自定義圖像。我曾嘗試類似的東西:UITableViewCell分隔線在滾動中消失

在我的cellForRowAtIndexPath:

NSString *cellIdentifier = [NSString stringWithFormat:@"identifier"]; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 
} 

cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:19]; 
cell.textLabel.text = [self.menuItems objectAtIndex:indexPath.row]; 
cell.textLabel.textColor = [UIColor colorWithRed:128/255.0f green:129/255.0f blue:132/255.0f alpha:1.0f]; 
cell.backgroundColor = [UIColor whiteColor]; 

UIImageView *imagView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"reaL.png"]]; 
imagView.frame = CGRectMake(0, cellHeight, cellWidth, 1); 
[cell.contentView addSubview:imagView]; 

switch (indexPath.row) { 
    case 0: 
     cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"img1.png"] scaledToSize:CGSizeMake(27, 27)]; 
     cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"route.png"] scaledToSize:CGSizeMake(27, 27)]; 
     break; 
    case 1: 
     cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"img.png"] scaledToSize:CGSizeMake(27, 27)]; 
     cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"money.png"] scaledToSize:CGSizeMake(27, 27)]; 
     break; 
    case 2: 
     cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"auto.png"] scaledToSize:CGSizeMake(27, 27)]; 
     cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"cars.png"] scaledToSize:CGSizeMake(27, 27)]; 
     break; 
    case 3: 
     cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"impostazioni.png"] scaledToSize:CGSizeMake(27, 27)]; 
     cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"impostazioni.png"] scaledToSize:CGSizeMake(27, 27)]; 
     // cell.imageView.contentMode = UIViewContentModeScaleAspectFill; 
     break; 
    case 4: 
     cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"info.png"] scaledToSize:CGSizeMake(27, 27)]; 
     cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"info.png"] scaledToSize:CGSizeMake(27, 27)]; 
     break; 
    default: 
     break; 
} 

return cell; 

當我吃午飯的應用都好,但是當我滾動表,或當我選擇一個單元格的分隔線消失。我如何擁有一個永久的自定義行分隔符?

+0

你爲什麼使用分隔圖像?這不是正確的方法來補充它。我們可以幫助你做到更好的方式。 – duci9y

+0

你好,你能解釋一下它是怎麼做到的? – iconso

+0

你需要告訴我爲什麼你使用圖像作爲分隔符。 – duci9y

回答

0

您不是首先正確創建單元格。以下是一些提示,可以幫助解決您遇到的問題。

首先,自從ios6開始,Apple現在允許我們預先註冊我們用來排列細胞的類,這樣就沒有更多的細胞檢查!在你看來沒有負載,你會想要做一個類似於:

[self.tableView registerClass:[CustomTableViewCellClass class] forCellReuseIdentifier:customIdentifier]; 

這將允許您正確每次出隊的細胞,如:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:customIdentifier]; 

下一步,這是我認爲你遇到問題。您每次創建圖像視圖並將其添加到單元格時,該單元格已經出隊。

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"reaL.png"]]; 
imageView.frame = CGRectMake(0, cellHeight, cellWidth, 1); 
[cell.contentView addSubview:imageView]; 

你只需要做到這一點的第一次創建的細胞,否則你會每一個細胞重新使用的時間被不斷增加的UIImageViews到電池的頂部。對於這種情況,更好的模式是在定製單元本身上有一個UIImageView *引用。當單元格出隊時,請設置圖像和框架。這樣UIImageView只創建一次並添加到單元中一次。

祝你好運!