Abdou023
Abdou023

Reputation: 1664

UITableView with 3 custom cells but 1 different

I have a TableView and I have created custom cells for that TableView with images, labels..etc, But I want one cell to be different than the others with It's own content ( cells will get their data from a backend). So how to create 2 different types of cells in the same TableView, and how to arrange them, for example put 1 type of cell between 2 others ?

Edit: My UITableView Class:

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let myCell: CellTableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as! CellTableViewCell

    let otherCell: OtherCellTableViewCell = tableView.dequeueReusableCellWithIdentifier("otherCell", forIndexPath: indexPath) as! OtherCellTableViewCell
    // Configure the cell...

    return myCell
}

Upvotes: 0

Views: 84

Answers (1)

Dave Batton
Dave Batton

Reputation: 8835

If you're using a storyboard, just drag another UITableViewCell into the table view to be used as a prototype. Give it a unique and subclass (if necessary). In -tableView:cellForRowAtIndexPath: dequeue either the cell you're currently dequeueing, or this new one.

If you're not using a storyboard you'll need to either -registerClass:forHeaderFooterViewReuseIdentifier: or -registerNib:forHeaderFooterViewReuseIdentifier: to make your other cell style available to the table view.

Here's a modified version of your code that should work:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    if condition {
        let myCell: CellTableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as! CellTableViewCell
        // Configure the cell...
        return myCell
    }
    else {
        let otherCell: OtherCellTableViewCell = tableView.dequeueReusableCellWithIdentifier("otherCell", forIndexPath: indexPath) as! OtherCellTableViewCell
        // Configure the cell...
        return otherCell
    }
}

Upvotes: 1

Related Questions