2012-06-20 3 views
1

У меня есть несколько разных ячеек в моем таблицеView, каждый с разными подзонами. Каждый раз, когда ячейка исчезает и снова появляется, субвизор добавляется поверх старого представления, а также добавляется в другие ячейки. Каков правильный способ добавления subviews в ячейки без использования пользовательских ячеек?Добавить subview в UITableViewCell: добавлено несколько раз при прокрутке

Заранее спасибо

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"StatisticsCell"; 

    StatisticsCell *cell = (StatisticsCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) 
    {   
     NSArray *topLevelObject = [[NSBundle mainBundle] loadNibNamed:@"StatisticsCell" owner:nil options:nil]; 
     for (id currentObject in topLevelObject) 
     { 
      if ([currentObject isKindOfClass:[UITableViewCell class]]) 
      { 
       cell = (StatisticsCell *)currentObject; 



       break; 
      } 
     } 
    } 


    if (indexPath.section == 0 && indexPath.row == 0) 
    { 
     //Add a subview here 
     [cell addsubview .... 
    } 
    else if (indexPath.section == 0 && indexPath.row == 1) 
    { 
     //Add a subview here 
     [cell addsubview .... 
    } 

    etc.... 

ответ

5

всякий раз, когда вы перечисляете ячейки для метода строки называются, поэтому, когда ваша клетка будет видна, он добавит подвид в камеру, установите флажок, который вид добавляется уже, сделать Ивар, то есть BOOL, п установить это верно когда и добавить вид н ложь, когда и как этот Удалитель

. 
. 
. 

if (indexPath.section == 0 && indexPath.row == 0 && isFirstViewAlreadyAdded== NO) 
    { 
     //Add a subview here 
     [cell addsubview .... 
     isFirstViewAlreadyAdded = YES; 
    } 
    else if (indexPath.section == 0 && indexPath.row == 1 && isSecondViewAlreadyAdded == NO) 
    { 
     //Add a subview here 
     [cell addsubview .... 
     isSecondViewAlreadyAdded = YES; 

    } 

. 
. 
. 
3

Вы можете проверить, что подпанель уже добавлен в клетку или нет.

UIView *subView = [tableCell viewWithTag:tagOfYourSubView];  
if (subView) { 
    //subView exists 
} 
else { 
    //subView does not exist 
} 

Если он не добавлен, то вы можете добавить его.

1

не добавлять подвид каждый раз .. Вы должны добавить подвид в если (== ноль клеток) блока. И после этого вы можете установить скрытое свойство как true или false в соответствии с indexpath.row. like:

if (indexpath.row == 0) 
img1.hidden = FALSE; 
else 
img1.hidden = TRUE; 
Смежные вопросы