2013-05-21 3 views
0

В моем приложении я добавляю 3 UILabel к каждой ячейке представления таблицы следующим образом.Добавление элементов NSArray в представление содержимого UITableViewCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"ShowMoreCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    cell = [self getCellContentView:CellIdentifier]; 
    return cell; 
} 

- (UITableViewCell *)getCellContentView:(NSString *)cellIdentifier 
{ 
    UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier] autorelease]; 
    cell.backgroundColor=[UIColor clearColor]; 
    for(int j = 0; j < 3; j++) 
     [cell insertSubview:[items objectAtIndex:j] atIndex:j]; 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    return cell; 
} 

Здесь элементы является NSMutableArray и имеет элементы UILabel. Я пытаюсь добавить три labels в каждом cell. Но он отображает 3 labels только в последней строке.

Я делаю что-то неправильно здесь?

Благодаря

+2

вы не повторно используете ячейку, а создаете новую, каждый раз вызываете cellForRowAtIndexPath, что, я думаю, вызовет у вас больше проблем с памятью. – Joshua

ответ

3

Вы пытаетесь добавить одни и те же объекты UILabel к различным клеткам. UIViews (который UITableViewCell является подклассом) может иметь только один родительский вид. Вы должны создать 3 новые метки для каждой ячейки (если она еще не содержит их).

0

Объекты представления, например метки, не должны храниться в какой-либо форме. Лучший способ приблизиться к этой проблеме - хранить элементы данных в массиве и использовать ячейки для отображения только этих объектов.

Создание пользовательских сотовый сказать

`

MyTableViewCell : UITableViewCell 

@property(nonatomic,strong)UILabel * lbl1; 

@property(nonatomic,strong)UILabel * lbl2; 

@property(nonatomic,strong)UILabel * lbl3; 

@end; 

Затем установите значения этих меток с использованием как

cell.lbl1.text = @" some text"; 
cell.lbl2.text = @" some text"; 
cell.lbl3.text = @" some text"; 
0
UILabel *lblAdd=[[UILabel alloc]initWithFrame:CGRectMake(10, 60, 150, 20)]; 
lblAdd.backgroundColor =[UIColor clearColor]; 
lblAdd.textColor=[UIColor blackColor]; 



[email protected]"Label"; 
lblAdd.font=[UIFont fontWithName:@"Helvetica" size:12]; 
[cell.contentView addSubview:lblAdd]; 

Вот и вы найдете этикетки в каждой строке Happy Coding

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