Showing posts with label UITableViewDataSource tableView canMoveRowAtIndexPath example. Show all posts
Showing posts with label UITableViewDataSource tableView canMoveRowAtIndexPath example. Show all posts

Saturday, June 8, 2013

UITableViewDataSource tableView canMoveRowAtIndexPath example in Objective C (iOS).


UITableViewDataSource tableView canMoveRowAtIndexPath

Asks the data source whether a given row can be moved to another location in the table view.

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

Parameters of [UITableViewDataSource tableView canMoveRowAtIndexPath]
tableView
The table-view object requesting this information.
indexPath
An index path locating a row in tableView.

Return Value
YES if the row can be moved; otherwise NO.

Discussion of [UITableViewDataSource tableView canMoveRowAtIndexPath]
This method allows the delegate to specify that the reordering control for a the specified row not be shown. By default, the reordering control is shown if the data source implements the tableView:moveRowAtIndexPath:toIndexPath: method.

UITableViewDataSource tableView canMoveRowAtIndexPath example.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSLog(@"canMove=%d", indexPath.row);
  // nothing. No output
  return (indexPath.section == 1) ? YES : NO;
}

Example of [UITableViewDataSource tableView canMoveRowAtIndexPath].
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleNone;
}

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

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

UITableViewDataSource tableView canMoveRowAtIndexPath example.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return true;
}

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

    RowObj *row = [myTableViewData objectAtIndex:sourceIndexPath.row];
    [myTableViewData removeObjectAtIndex:sourceIndexPath.row];
    [myTableViewData insertObject:row atIndex:destinationIndexPath.row];
}

End of UITableViewDataSource tableView canMoveRowAtIndexPath example article.