2012-07-10 12 views
6

Ich habe eine Iphone-Anwendung, in der ich zwei Arrays kombinieren und in der gleichen Tabelle anzeigen. Das Problem hier ist, konnte ich nicht die Position des detaillierten Textlabel in der Zelle ändern.Hier ist mein Code-Schnipsel `Ändern der Position des Detailtextlabel in der Zelle?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
     UIImageView* img = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"cell_with_arrow.png"]]; 
     [cell setBackgroundView:img]; 
     [img release];   
    } 
    if(newssarray==nil||[newssarray count]==0) 
    {    
    } 
    else 
    { 
     NSDictionary *dicttable=[newssarray objectAtIndex:indexPath.row]; 
     head=[dicttable objectForKey:@"news"]; 
     head1=[dicttable objectForKey:@"name"]; 
     NSString *sub=[dicttable objectForKey:@"created"]; 

     NSLog (@"%@",head); 

     [[cell viewWithTag:12] removeFromSuperview]; 
     [[cell viewWithTag:13] removeFromSuperview]; 
     [[cell viewWithTag:14] removeFromSuperview]; 

     UIButton *shopLabel=[self buttonWithText:head andFrame:CGRectMake(49, 12, 250,5)] ; 
     shopLabel.tag=12; 
     //shopLabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin; 
     [shopLabel addTarget:self action:@selector(openRestaurantsList) forControlEvents:UIControlEventTouchUpInside]; 

     UIButton *shopLabel1=[self buttonWithText:head1 andFrame:CGRectMake(49, 12, 250,5)] ; 
     shopLabel1.tag=14; 
     //shopLabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin; 
     [shopLabel1 addTarget:self action:@selector(openRestaurantsList) forControlEvents:UIControlEventTouchUpInside]; 
     cell.detailTextLabel.frame = CGRectMake(49, 30, 150,5); 
     if(indexPath.row < [newsseperatearray count]) 
     { 
      UIImage *cellImage = [UIImage imageNamed:@"news.png"]; 
      cell.imageView.image = cellImage; 
      //NSStringEncoding encoding=NSASCIIStringEncoding; 
      cell.imageView.frame=CGRectMake(0,0,48,48); 
      cell.imageView.bounds=CGRectMake(0,0,48,48); 
      [cell.imageView setClipsToBounds:NO]; 
      NSLog(@"%@",sub);      
      cell.detailTextLabel.text = sub; 
      cell.detailTextLabel.backgroundColor = [UIColor clearColor]; 
     } 
     else 
     { 
      UIImage *cellImage = [UIImage imageNamed:@"menu_icon.png"]; 
      cell.imageView.image = cellImage; 
      //NSStringEncoding encoding=NSASCIIStringEncoding; 
      cell.imageView.frame=CGRectMake(0,0,48,48); 
      cell.imageView.bounds=CGRectMake(0,0,48,48); 
      [cell.imageView setClipsToBounds:NO]; 
     } 
     [cell addSubview:shopLabel]; 
     [cell addSubview:shopLabel1]; 
     // [cell addSubview:shopLabel2]; 
    } 
    return cell; 
} 

`kann mir jemand helfen, dies zu erreichen?

Antwort

7

Erstellen Sie eine UITableViewCell-Unterklasse, behalten Sie diesen Zellenstil als UITableViewCellStyleSubtitle und überschreiben Sie layoutSubviews in dieser Unterklasse. Sie können dann den Rahmen von detailTextLabel ändern (stellen Sie sicher, dass Sie die Super-Implementierung von layoutSubviews in Ihrer Methode aufrufen).

Verwandte Themen