2012-06-29 3 views
4

Я создаю TableView, который содержит 20 строк. Я должен добавить отдельные метки в четные ячейки, и мне нужно добавить две метки в нечетные ячейки. Когда я добавляю нужные ярлыки и прокручиваю мои метки стол, этикетки disappars, как я иду вниз помочь мне.ярлык не отображается на tableView cell

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    // UITableView *cell=[tableView ] 
if (cell == nil) 
{ 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 


    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    if(indexPath.row%2==0) 
    { 
     UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
     [email protected]"o1"; 
     [cell addSubview:cellLabel]; 
     [cellLabel release]; 
    } 
    else 
    { 
     UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
     [email protected]"e1"; 
     [cell addSubview:cellLabel1]; 
     [cellLabel1 release]; 
     UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)]; 
     [email protected]"e2"; 
     [cell addSubview:cellLabel2]; 
     [cellLabel2 release]; 
    } 

} 
+0

возможно дубликат [Текст в UITableViewCell отсутствует, когда прокрутка вниз] (http://stackoverflow.com/questions/1432143/text-in-uitableviewcell -missing-when-scroll-down) – rishi

+0

Вам нужно добавить свойство 'tag' для каждого' UILabel – iNoob

+0

http://www.theappcodeblog.com/2011/02/24/table-view-tutorial-part-4-customizing -a-table-cell/ –

ответ

0

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *EvenCellIdentifier = @"EvenCell"; 
    static NSString *OddCellIdentifier = @"OddCell"; 
    NSString* cellIdentifier = (indexPath.row % 2) == 0 ? EvenCellIdentifier : OddCellIdentifier; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease]; 

     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     if(indexPath.row%2==0) 
     { 
      UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
      [email protected]"o1"; 
      [cell addSubview:cellLabel]; 
      [cellLabel release]; 
     } 
     else 
     { 
      UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
      [email protected]"e1"; 
      [cell addSubview:cellLabel1]; 
      [cellLabel1 release]; 
      UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)]; 
      [email protected]"e2"; 
      [cell addSubview:cellLabel2]; 
      [cellLabel2 release]; 
     } 
    } 

    return cell; 
} 
+0

Я пробовал это, но снова прокручиваю ярлыки, чтобы исчезнуть .... –

0

Делают это так:

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



    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    // UITableView *cell=[tableView ] 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

    UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
     [email protected]"o1"; 
cellLabel.tag = 2; 
     [cell addSubview:cellLabel]; 
     [cellLabel release]; 

     UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)]; 
     [email protected]"e1"; 
cellLable1.tag = 3; 
     [cell addSubview:cellLabel1]; 
     [cellLabel1 release]; 
     UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)]; 
     [email protected]"e2"; 
cellLabel2.tag = 4; 
     [cell addSubview:cellLabel2]; 
     [cellLabel2 release]; 
    } 

UILabel *label1 = (UILabel *) [cell viewWithTag:2]; 
UILabel *label2 = (UILabel *) [cell viewWithTag:3]; 
UILabel *label3 = (UILabel *) [cell viewWithTag:4]; 

if (indexPath.row%2==0) 
{ 
label1.hidden = FALSE; 
label2.hidden = TRUE; 
label3.hidden = TRUE: 
} 
else 
{ 
label1.hidden = TRUE; 
label2.hidden = FALSE; 
label3.hidden = FALSE; 
} 

    } 
+0

@ RAjKumar ---- нет worki нг. –

+0

удалите заявления о выпуске для всех ярлыков, а затем повторите попытку, я уверен, что он будет работать – Rajkumar

+0

см. Ответ NNC выше ... –

1

Проверьте это. Это то же самое, что и ваш код, который я только что изменил Y-позицию каждой метки и ее работу с прокруткой.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{ статический NSString * CellIdentifier = @ "Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
// UITableView *cell=[tableView ] 
if (cell == nil) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 


    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    if(indexPath.row%2==0) 
    { 
     UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 10, 40, 40)]; 
     [email protected]"o1"; 
     [cell addSubview:cellLabel]; 

    } 
    else 
    { 
     UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 10, 40, 40)]; 
     [email protected]"e1"; 
     [cell addSubview:cellLabel1]; 

     UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 10, 40, 40)]; 
     [email protected]"e2"; 
     [cell addSubview:cellLabel2]; 

    } 

} 
return cell; 

}

+1

ЕСЛИ вы используя высоту строки по умолчанию, тогда ваша маска перемещается за пределы относительной ячейки. Как вы дали Y = 40, а высота строки по умолчанию - 44. – Nikunj

+0

thanx !!!, он работает! –

0
 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *MyIdentifier = @"MyIdentifier"; 
    static NSString *MyIdentifier1 = @"MyIdentifier1"; 
    UITableViewCell *cell; 
    if(indexPath.row % 2 != 0) 
    { 
     cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    } 
    else 
    { 
     cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier1]; 
    } 
    if(cell == nil) 
    { 
     if(indexPath.row % 2 != 0) 
     { 
      cell=[self reuseTableViewCellWithIdentifier:MyIdentifier withIndexPath:indexPath]; 
     } 
     else 
     { 
      cell=[self reuseTableViewCellWithIdentifier:MyIdentifier1 withIndexPath:indexPath]; 
     } 
    } 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    return cell; 
} 
-(UITableViewCell *)reuseTableViewCellWithIdentifier:(NSString *)identifier withIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]autorelease]; 
    if([identifier isEqualToString:@"MyIdentifier"]) 
    { 

     UILabel *l1=[[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 30, 20)]autorelease]; 
     l1.backgroundColor=[UIColor redColor]; 
     [cell.contentView addSubview:l1]; 
     UILabel *l2=[[[UILabel alloc]initWithFrame:CGRectMake(65, 5, 30, 20)]autorelease]; 
     l2.backgroundColor=[UIColor grayColor]; 
     [cell.contentView addSubview:l2];  
    } 
    else 
    { 
     UILabel *l1=[[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 30, 20)]autorelease]; 
     l1.backgroundColor=[UIColor blueColor]; 
     [cell.contentView addSubview:l1]; 
    } 
    return cell; 
} 
0
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row%2==0) 
    { 
    static NSString *CellIdentifier = @"CustomCell"; 

    CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
     for (id currentObject in topLevelObjects) 
     { 
      if ([currentObject isKindOfClass:[UITableViewCell class]]) 
      { 
       cell = (CustomCell *) currentObject; 
       break; 
      } 
     } 
    } 
    cell.capitalLabel.text =[capitals objectAtIndex:indexPath.row]; 
    cell.stateLabel.text = [states objectAtIndex:indexPath.row]; 
    cell.t1.delegate=self; 
    cell.t1.tag=indexPath.row; 
    cell.t1.text=[arrTemp objectAtIndex:indexPath.row]; 
    cell.s1.backgroundColor=[UIColor grayColor]; 
    cell.s1.contentSize=CGSizeMake(1000, 40); 
    return cell; 
    } 
    else 
    { 
     static NSString *CellIdentifier1 = @"CustomCell1"; 

     CustomCell1 *cell1 = (CustomCell1 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; 
     if (cell1 == nil) 
     { 
      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell1" owner:self options:nil]; 
      for (id currentObject in topLevelObjects) 
      { 
       if ([currentObject isKindOfClass:[UITableViewCell class]]) 
       { 
        cell1 = (CustomCell1 *) currentObject; 
        break; 
       } 
      } 
     } 
     [email protected]"alok"; 
     return cell1; 

    } 

} 

0
 static NSString *CellIdentifier = @"Cell"; 
    static NSString *CellIdentifierButton = @"CellButton"; 
    UITableViewCell *cell = nil; 




     if (indexPath.section <=2) 
     { 
     if(indexPath.section==2&&indexPath.row==4) 
     { 
      cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierButton]; 

     } 
     else 
     { 
      cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     } 
    } 
    if (cell == nil) 
    { 
     if (indexPath.section <=2) 
     { 
      if(indexPath.section==2&&indexPath.row==4) 
      { 
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifierButton]; 
       UIButton *b1 = [[UIButton alloc]initWithFrame:CGRectMake(200, 10, 300, 80)]; 
       [b1 setBackgroundColor:[UIColor redColor]]; 
       [b1 setTag:501];   
       [cell.contentView b1]; 

       UIButton * b2 = [[UIButton alloc]initWithFrame:CGRectMake(200, 120, 300, 80)]; 
       [b2 setBackgroundColor:[UIColor redColor]]; 
       [b2 setTag:502];   
       [cell.contentView b2]; 

      } 
      else 
      { 
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
       UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 250, 44)]; 
       [label setBackgroundColor:[UIColor clearColor]]; 
       [label setTag:500];   
       [cell.contentView addSubview:label]; 

       //end for section 1 

       //for section2 



       } 
       //end for section 2 

      } 


     } 
    } 




    //====setting the values===// 
    if (indexPath.section ==0) 
    { 
     UILabel *label = (UILabel *)[cell.contentView viewWithTag:500]; 
     if (label) { 
      [label setText:[arr1 objectAtIndex:indexPath.row]]; 
     } 
    } 
    if (indexPath.section ==1) 
    { 
     UILabel *label = (UILabel *)[cell.contentView viewWithTag:500]; 
     if (label) { 
      [label setText:[arr2 objectAtIndex:indexPath.row]]; 
     } 
    } 
Смежные вопросы