简体   繁体   中英

multiple cell in tableview

I am working on an ios project which uses tableview. I could populate tableviews properly but now I want two cells in a tableview.

  1. This is a fixed cell one which I could put datepicker into
  2. This should be populated with data maybe from a storage or hard coded.

this means I want the first cell to be fixed because it contains the datepicker alone.

this is my code so far for implementing the (2) requirement which means I am only able to implement one cell.

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
    }

any help would be appriciated. thanks

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
}

You can make 2 sections for this::

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
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM