iOS自定义UItableviewcell部分

时间:2017-08-01 18:01:29

标签: ios objective-c uitableview

尝试了解如何以及是否可以使用3个自定义单元格制作自定义UItableview,类似于下面的内容。

           Sensor Info
====================== 
Sensor 1: $Value_1   
Sensor 2: $Value_2
Sensor 3: $Value_3
Sensor 4: $Value_4   
Sensor 5: $Value_5
Sensor 6: $Value_6

             Errors
===================
Error 1  :  $error1
Error 2..:  $error2..

       Another Section
========================
Error 1  :  $error1
Error 2..:  $error2..

一个建议可能是将所有内容添加到一个数组中,然后填充表,但我需要每个段加载一个接一个。按下按钮后,每个段内容都是从视图控制器类中的方法生成的。传感器信息,错误,另一部分以及更多,如果我打算稍后再添加。

我很难尝试掌握如何为每个部分构建一个包含不同行syles的表。我想让所有传感器数据自定义单元格和字幕单元格或正确的细节。

1 个答案:

答案 0 :(得分:1)

您可以拥有所需数量的源和部分。

每个部分甚至可以有一个原型单元格。

只需验证您的位置并按照以下方式处理:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 44
}

func numberOfSections(in tableView: UITableView) -> Int {
    return 2
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    if (section == 0) {
        return "Title 1"
    }
    if (section == 1) {
        return "Title 2"
    }          
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0 {
        return contactPhones.count
    } else if section == 1 {
        return contactEmails.count
    } else {
        return 1
    }
}

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellIdentifier: String = "Cell"
    var cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as UITableViewCell!
    if cell == nil {
        cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: cellIdentifier)
    }

    if indexPath.section == 0 {
        cell?.textLabel?.text = contactPhones[indexPath.row]["phoneNumber"].stringValue
        cell?.imageView?.image = UIImage(flagImageWithCountryCode: contactPhones[indexPath.row]["phoneCountryCode"].stringValue)
    } else if indexPath.section == 1 { 
        cell?.textLabel?.text = contactEmails[indexPath.row]["emailAddress"].stringValue
    }

    return cell!
}