The delegate method (accessoryTypeForRowWithIndexPath) has been deprecated, so don't use that.

Use UITableViewCellAccessoryCheckmark for a checkmark.

Use UITableViewCellAccessoryNone to remove the checkmark.

Adding an index to a tableview[permalink]Some tableviews have the short-cut list thingie on the side, which apple calls the index. The index is section-based - each entry in the index corresponds to a section in your data. So if you have a pretty flat list (just an NSArray, for instance), you'll either need to map section-> index, or split up your data so it's physically organized in section/row.

And then override these. In this case, I split up an array into an array of arrays, each sub-array being the contents of a section that corresponds to a string to display in the index. _tableIndex is an array of strings for display of the index.

Controlling UITableView row rearranging[permalink]Say that you want to let the user rearrange tableview rows except for the first and the last, which can't move. First, inhibit the drawing of the little rearrange indicator on the first and last rows:

Finding the row from a tableview cell button[permalink]You can add buttons to a UITableViewCell. The fun part is figuring out what row that button lives on. Assuming that the button is added right to the cell, you can look at the button's superview to get the cell, and then ask the tableview for the cell's section and row.

Invalidating a single row[permalink]Sometimes you want to update a single row of a tableview as new information comes in. Such as loading something in the background and you want to update a percentage being shown in the cell. You could -reloadData, but don't. That's an awfully big hammer. Instead just reload a row