我应该如何以编程方式创建自定义UITableCellView

时间:2014-07-16 22:04:26

标签: ios uitableview

我处于需要创建自定义表格单元格的情况。我已经将UITableViewCell子类化了:

@interface CustomTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *icon;
@property (weak, nonatomic) IBOutlet UILabel *name;
@property (weak, nonatomic) IBOutlet UILabel *timestamp;
@property (weak, nonatomic) IBOutlet UILabel *email;
@property (weak, nonatomic) IBOutlet UILabel *phone;

...

始终需要图标,名称和时间戳。电子邮件和电话是可选标签。我最初只是隐藏了“可选”标签,但这并没有消除他们占用的空间。所以我正在考虑以编程方式构建这个tableviewcell。

2件事:

  1. 我无法找到以编程方式构建此限制的任何地方,所以我很难知道如何开始。

  2. 我已经在IB中创建了一些,即因为图像,名称和时间戳总是在那里,我想也许这会更好地放入IB。然后只需在名称和时间戳下面构建其他标签:

  3. enter image description here

    我尝试创建一个新的initMethod:

    - (id)initWithUser:(User *) user {
        self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"userCell"];
        if (self) {
            // configure required stuff
            [self.icon setImage:[PersonImage imageForTimestamp:user.timestamp]];
            self.name.text = user.name;
            self.timestamp.text = user.timestamp;
    
            if (user.email != nil) {
              //add email label with constraint tied to timestamp
            }
    
            if (user.phone != nil) {
              //add phone label with constraint tied to timestamp or email
            }
        }
        return self;
    }
    

    我在IB中将标识符设置为userCell。但它似乎没有我要求的标签。我可以这样做吗?这是个好主意吗?如何使用正确的位置创建标签?

1 个答案:

答案 0 :(得分:0)

您的部分问题是表格视图中的单元格每次都不是init d。它们被出列以便每次都节省创建新单元的开销。您将自定义您在-tableView:cellForRowAtIndexPath:中重新分类的单元格的数据。