-1

我是 iPhone 开发者的新手,

我正在使用UITableView,我想要在 LHS 上CellUITableView3 个标签和 RHS 上的 3 个标签中总共有 6 个标签

这是我的代码片段,

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 180;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        
        CGRect frameL;
        frameL.origin.x = 10; 
        frameL.origin.y = 10;
        frameL.size.height = 50;
        frameL.size.width = 200;
        
        CGRect frameR;
        frameR.origin.x = 200; 
        frameR.origin.y = 10;
        frameR.size.height = 40;
        frameR.size.width = 180;
        
        
        UILabel *AlertNameLHS = [[UILabel alloc] initWithFrame:frameL];
        AlertNameLHS.font=[UIFont systemFontOfSize:16.0];
        AlertNameLHS.backgroundColor=[UIColor clearColor];
        AlertNameLHS.textColor=[UIColor redColor];
        AlertNameLHS.text=@"Alert Name :";
        [cell.contentView addSubview:AlertNameLHS];
        
        frameL.origin.y += 60;
        UILabel *AlertMonthLHS = [[UILabel alloc] initWithFrame:frameL];
        AlertMonthLHS.font=[UIFont systemFontOfSize:16.0];
        AlertMonthLHS.backgroundColor=[UIColor clearColor];
        AlertMonthLHS.textColor=[UIColor redColor];
        AlertNameLHS.text=@"Alert Month :";
        [cell.contentView addSubview:AlertMonthLHS];
        
         frameL.origin.y += 120;
         UILabel *DueOnLHS = [[UILabel alloc] initWithFrame:frameL];
         DueOnLHS.font=[UIFont systemFontOfSize:16.0];
        AlertNameLHS.text=@"Due On :";
         [cell.contentView addSubview:DueOnLHS];
        
    AlertNameRHS = [[UILabel alloc] initWithFrame:frameR];
    AlertNameRHS.backgroundColor=[UIColor greenColor];
    AlertNameRHS.textColor=[UIColor redColor];
    AlertNameRHS.textColor=[UIColor redColor];
    AlertNameRHS.font=[UIFont systemFontOfSize:18.0];
    [cell.contentView addSubview:AlertNameRHS];
    
     frameL.origin.y += 80;
    AlertMonthRHS = [[UILabel alloc] initWithFrame:frameR];
    AlertMonthRHS.font=[UIFont systemFontOfSize:18.0];
    [cell.contentView addSubview:AlertMonthRHS];
    
     frameL.origin.y += 120;
    DueOnRHS = [[UILabel alloc] initWithFrame:frameR];
    DueOnRHS.font=[UIFont systemFontOfSize:18.0];
    [cell.contentView addSubview:DueOnRHS];
    }
    
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    
    AlertNameRHS.text = [Myarray objectAtIndex:indexPath.row];
  
    return cell;
}

但我无法正确看到我的 UILabel。

任何帮助将不胜感激。

编辑 1::

4

3 回答 3

1

要执行此类工作,我建议您创建一个自定义单元格。(添加新文件 -> Objective-C 类 -> UItableViewCell)

定义 6 个具有属性的标签

#import <UIKit/UIKit.h>

@interface DemoCell : UITableViewCell
{
    IBOutlet UILabel *lblOne;
}

@property (nonatomic,retain) IBOutlet UILabel *lblOne;

现在创建一个新的空视图(仅 nib 文件),将其命名为 Democell(为了您的方便) 现在,从 nib 文件和库中删除视图,将 Table View Cell 拖放到 nib 文件中视图的位置。

现在选择您的 tableviewcell ,并在其身份检查器中,将其类更改为 DemoCell 所以这会将您的 nib 文件与自定义单元类链接..

现在在 nib 文件中,拖放 6 个标签,根据您的要求定位它们,并在文件所有者中将所有 lbls 链接到 lblOne,lblTwo ,,,,....

现在您的自定义单元格已完成。要在表格的 cellforrowatindexpath 中使用此单元格

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"cell";
    DemoCell *cell= (DemoCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell ==nil)
    {
        cell=[[[NSBundle mainBundle]loadNibNamed:@"DemoCell" owner:self options:nil] lastObject];
    }


cell.lblone.textlabel.text = @"lblOne";
于 2012-07-12T09:11:04.010 回答
1

请参阅更正后的代码:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        CGRect frameL;
        frameL.origin.x = 10; 
        frameL.origin.y = 10;
        frameL.size.height = 50;
        frameL.size.width = 200;

        CGRect frameR;
        frameR.origin.x = 200; 
        frameR.origin.y = 10;
        frameR.size.height = 40;
        frameR.size.width = 180;


        UILabel *AlertNameLHS = [[UILabel alloc] initWithFrame:frameL];
        AlertNameLHS.font=[UIFont systemFontOfSize:16.0];
        AlertNameLHS.backgroundColor=[UIColor clearColor];
        AlertNameLHS.textColor=[UIColor redColor];
        AlertNameLHS.text=@"Alert Name :";
        [cell.contentView addSubview:AlertNameLHS];

        frameL.origin.y += 60;
        NSLog(@"fr %f", frameL.origin.y);
        UILabel *AlertMonthLHS = [[UILabel alloc] initWithFrame:frameL];
        AlertMonthLHS.font=[UIFont systemFontOfSize:16.0];
        AlertMonthLHS.backgroundColor=[UIColor clearColor];
        AlertMonthLHS.textColor=[UIColor redColor];
        AlertMonthLHS.text=@"Alert Month :";
        [cell.contentView addSubview:AlertMonthLHS];

        frameL.origin.y += 60;
        NSLog(@"fr %f", frameL.origin.y);
        UILabel *DueOnLHS = [[UILabel alloc] initWithFrame:frameL];
        DueOnLHS.font=[UIFont systemFontOfSize:16.0];
        DueOnLHS.text=@"Due On :";
        [cell.contentView addSubview:DueOnLHS];

        AlertNameRHS = [[UILabel alloc] initWithFrame:frameR];
        AlertNameRHS.backgroundColor=[UIColor greenColor];
        AlertNameRHS.textColor=[UIColor redColor];
        AlertNameRHS.textColor=[UIColor redColor];
        AlertNameRHS.font=[UIFont systemFontOfSize:18.0];
        AlertNameRHS.text = @"l1";
        [cell.contentView addSubview:AlertNameRHS];

        frameR.origin.y += 60;
        AlertMonthRHS = [[UILabel alloc] initWithFrame:frameR];
        AlertMonthRHS.font=[UIFont systemFontOfSize:18.0];
        AlertMonthRHS.text =@"l2";
        [cell.contentView addSubview:AlertMonthRHS];

        frameR.origin.y += 60;
        DueOnRHS = [[UILabel alloc] initWithFrame:frameR];
        DueOnRHS.font=[UIFont systemFontOfSize:18.0];
        DueOnRHS.text = @"l3";
        [cell.contentView addSubview:DueOnRHS];
    }

    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

    AlertNameRHS.text = [NSString stringWithFormat:@"%d",indexPath.row];

    return cell;
}

你犯了太多错误:

LHS1 是可见的,但你用 LHS3 文本覆盖它的文本: AlertNameLHS.text=@"Due On :";

LHS2 不可见,因为您只初始化它并添加为子视图,配置 LHS1 而不是它

LHS3 是不可见的,因为单元格高度是 180,它的 y 坐标是 190,你也不要设置它的文本,而是设置 LHS1 文本。

RHS 标签框架不正确并且超出单元格框架,您应该使用 frameR 但使用 frameL,我还建议您在每一步的 y 坐标上添加 60 个像素。

于 2012-07-12T10:14:45.737 回答
-1

定义 6 个标签并为此设置框架。然后,将SubView 添加到tableViewCell contentView。

于 2012-07-12T09:14:24.707 回答