6

私は2つの配列を組み合わせて同じテーブルに表示しているiPhoneアプリケーションを持っています.ここでの問題は、セル内の詳細なテキストラベルの位置を変更できなかったことです.これが私のコードスニペットです`

- (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;
}

「これを達成するのを手伝ってくれる人はいますか?

4

1 に答える 1

7

UITableViewCell サブクラスを作成し、そのセル スタイルを のままにして、そのサブクラスUITableViewCellStyleSubtitleでオーバーライドlayoutSubviewsします。その後、 のフレームを変更できますdetailTextLabel(メソッドで のスーパー実装を呼び出すようにlayoutSubviewsしてください)。

于 2012-07-10T06:01:45.190 に答える