tableview中的多个单元格

时间:2018-03-23 16:00:16

标签: ios swift uitableview

我正在开发一个使用tableview的ios项目。我可以正确填充tableviews但现在我想在tableview中使用两个单元格。

  1. 这是一个固定的单元格,我可以将datepicker放入
  2. 这应该使用来自存储或硬编码的数据填充。
  3. 这意味着我想要修复第一个单元格,因为它只包含datepicker。

    到目前为止,这是我执行(2)要求的代码,这意味着我只能实现一个单元格。

    let animals: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"]
    
     override func numberOfSections(in tableView: UITableView) -> Int {
    
            return 1
        }
    
        override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
            return animals.count
        }
    
    
        override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
            cell.textLabel?.text = animals[indexPath.row]
    
            return cell
        }
    

    任何帮助都会得到满足。感谢

2 个答案:

答案 0 :(得分:1)

let animals: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"]

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.reloadData()
}

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

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

}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if indexPath.section == 0 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CELL_IDENTIFIER_FOR_DATEPICKER_CELL", for: indexPath)
        return cell
    }else{
        let cell = tableView.dequeueReusableCell(withIdentifier: "CELL_IDENTIFIER_FOR_DEFAULT_CELL", for: indexPath
        cell.textLabel?.text = animals[indexPath.row]
        return cell
    }
}

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

答案 1 :(得分:0)

您可以为此::

制作2个部分
let animals: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"]

 override func numberOfSections(in tableView: UITableView) -> Int {

    return 2 // one for cell 1, and other for 2nd types
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0  { return 1 } // 1 for datePicker
    else { return animals.count } // requirement 2

}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

    if indexPath.section == 0 {
       cell.textLabel?.isHidden= true
       var datePicker = ...
       // create date Picker and cell.contentView.addSubview(datePicker)
    } else {
       cell.textLabel?.text = animals[indexPath.row]
    }


    return cell
}