UITableViewCell子类中的附件类型不可见

时间:2016-08-11 09:48:45

标签: ios swift uitableview

我正在以编程方式完成所有工作。我有一个UITableView,其行是UITableViewCell子类。我无法设置我的单元格的配件类型,因为屏幕上没有任何内容。稍后我希望能够选择一个单元格,并在选中时添加一个复选标记。

class ContactsTableViewCell: UITableViewCell {

    let name = UILabel()
    let phoneNumber = UILabel()
    let iPADFACTOR:CGFloat = DeviceHelper().isIPAD ? 1.4: 1.0

    var rowSelected = false

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

        phoneNumber.font = UIFont.systemFontOfSize(15)
        phoneNumber.textColor = UIColor.lightGrayColor()
        self.contentView.addSubview(name)
        self.contentView.addSubview(phoneNumber)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {

        let margeV:CGFloat = 5.0*iPADFACTOR
        let margeH = self.frame.width*0.05

        name.frame = CGRectMake(margeH, margeV, self.frame.width - margeH * 4, 18)
        phoneNumber.frame = CGRectMake(margeH, name.frame.maxY + 5, self.frame.width - margeH * 4, 15)
    }

}

正如你所看到我正在使用layoutSubviews()方法,设置标签的框架,我尝试使用标签大小来检查它是否隐藏了accessoryView而没有成功。我甚至尝试将它们的帧设置为0。

我也不确定我是否正确设置了框架。我应该使用self.contentView.frame代替self.frame吗?

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

override func layoutSubviews() {
    super.layoutSubviews()
    let margeV:CGFloat = 5.0*iPADFACTOR
    let margeH = self.frame.width*0.05

    name.frame = CGRectMake(margeH, margeV, self.frame.width - margeH * 4, 18)
    phoneNumber.frame = CGRectMake(margeH, name.frame.maxY + 5, self.frame.width - margeH * 4, 15)
}

答案 1 :(得分:0)

if (YES) {
    cell.accessoryType = UITableViewCellAccessoryType.Checkmark
} else {
    cell.accessoryType = UITableViewCellAccessoryType.None;
}