In my iOS app I have a table with 4 sections. I created a subtitle cell for each section and each cell has got its own identifier as you can see from the screenshot:
The problem is that when I need to insert a cell in that section by creating it with its identifier, I get am exception saying 'unable to dequeue a cell with identifier ... ' Here's my method:
override func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell?
var selectedStatus:String
switch indexPath.section {
case 0:
let cell = tableView.dequeueReusableCellWithIdentifier("OpenTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Aperti"
break
case 1:
let cell = tableView.dequeueReusableCellWithIdentifier("ClosedTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Chiusi"
break
case 2:
let cell = tableView.dequeueReusableCellWithIdentifier("ExpiredTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Scaduti"
break
case 3:
let cell = tableView.dequeueReusableCellWithIdentifier("SuspendedTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Sospesi"
break
default:
let cell = tableView.dequeueReusableCellWithIdentifier("",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = ""
break
}
let task = self.organizedTasks.items[selectedStatus]![indexPath.row]
cell?.textLabel?.text = task.titolo
cell?.detailTextLabel?.text = task.priorita
return cell!
}
I don't know what I am missing... Can you help?
Well first of all, This looks like a disaster of an approach to using a tableview. Secondly, your first identifier in the screenshot is OpenTask (singular), but your code is looking for OpenTasks (plural).
Hope this helps
You are making mistake in you code by using let
to every cell
variable.
This is right way to do it:
override func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell?
var selectedStatus:String
switch indexPath.section {
case 0:
cell = tableView.dequeueReusableCellWithIdentifier("OpenTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Aperti"
break
case 1:
cell = tableView.dequeueReusableCellWithIdentifier("ClosedTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Chiusi"
break
case 2:
cell = tableView.dequeueReusableCellWithIdentifier("ExpiredTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Scaduti"
break
case 3:
cell = tableView.dequeueReusableCellWithIdentifier("SuspendedTasks",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = "Sospesi"
break
default:
cell = tableView.dequeueReusableCellWithIdentifier("",
forIndexPath: indexPath) as! UITableViewCell
selectedStatus = ""
break
}
let task = self.organizedTasks.items[selectedStatus]![indexPath.row]
cell?.textLabel?.text = task.titolo
cell?.detailTextLabel?.text = task.priorita
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.