Chiron
Chiron

Reputation: 20245

Reorder control isn't displayed on table view

I created an iOS application based on navigation-based application template, the application is backed by Core Data framework.

When clicking on Edit button, I want the rows to be reorder-able and delete-able.

When constructing cells, I added this line:

cell.showsReorderControl = YES;

And tableView:canMoveRowAtIndexPath: method returns YES.

But the reorder control isn't displayed in the row, Am I missing something?

Upvotes: 15

Views: 10082

Answers (3)

Shaik Riyaz
Shaik Riyaz

Reputation: 11462

try this . . .you have to implement these two methods to get that reorder control in editing mode

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
  return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{

}

Upvotes: 1

Benedict Cohen
Benedict Cohen

Reputation: 11920

From the UITableViewCell showsReorderControl docs:

For the reordering control to appear, you must not only set this property but implement the UITableViewDataSource method tableView:moveRowAtIndexPath:toIndexPath:. In addition, if the data source implements tableView:canMoveRowAtIndexPath: to return NO, the reordering control does not appear in that designated row.

Upvotes: 31

Jason Coco
Jason Coco

Reputation: 78353

The UITableView also has to be in editing mode, which it's not in by default. Usually you use a button or some other control to toggle between editing mode. To put the table view in editing mode (we assume you have a UITableViewController and your tableView property is properly set, if not, adjust for your environment):

// This line somewhere inside the UITableViewController will
// animate in the various editing controls and make sure they
// show up on your table.
[[self tableView] setEditing:YES animated:YES];

Upvotes: 12

Related Questions