2012-04-04 4 views
0

Я хочу показать изображение с правой стороны в UITableViewCell. Я использую этот код, чтобы сделать это:UITableViewCell с изображением на правой стороне

CGRect imageRect = {80,0,225,44}; 
UIImageView *uiv = [[UIImageView alloc] initWithFrame:imageRect]; 
[uiv setImage:[UIImage imageNamed:[NSString stringWithFormat:@"star%@.png", [[self reataurant] valueForKey:@"stars"]]]]; 
[uiv setClipsToBounds:YES]; 
[cell addSubview:uiv]; 

Моя проблема в том, что изображение будет показано в других клетках, когда я буду прокрутке TableView. Что я делаю неправильно?

+0

возможно дубликат [HTTP: // StackOverflow .com/вопросы/780395/UITableViewCell-с-изображением-на-вправо] (http://stackoverflow.com/questions/780395/uitableviewcell-with-image-on-the-right) – Sreeram

ответ

0

Эти UITableViewCells используются повторно. Посмотрите в вашем cellForRowAtIndexPath для

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

Если вы хотите только один или определенный набор ячеек, чтобы иметь эту конкретную схему, вы можете передать другой cellIdentifier для этих клеток.

1

Что, вероятно, происходит, так это то, что вы повторно используете ячейки, у которых уже есть изображение, когда вы этого не хотите. Проверьте

a) когда вы повторно используете ячейку, если у нее есть звездное изображение, то удалите ее.

b) прежде чем вы вернете ячейку, добавьте звезду в эту точку (с помощью любого теста, который вы используете, чтобы определить, должна ли звезда появляться).

0

Вы можете легко добавить изображение в виде аксессуара к ячейке таблицы для того же эффекта.

Вот пример кода для понимания:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"fileName"]]; 
cell.accessoryView = imageView; 
[imageView release]; 

И убедитесь, что вы повторно клеточное пространство представления таблицы в методе cellForRowAtIndexPath, используя идентификатор соты так, что переписывается проблема может быть устранена;)

NSString *CellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.section,indexPath.row]; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) 
{ 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 

Надежда, которая должна устранить проблему изображений получать на экране друг с другом, спасибо :)

Смежные вопросы