7

我试图让 UITableView 有 2 类 UITableViewCell (第 0 节有一行,第 1 节有 [self.dataArray count] 行)。

我尝试了这些链接:http: //developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/ManageReorderRow/ManageReorderRow.html

UITableView 中的重新排序控件
重新排序控件未显示在表格视图上

我已经添加:

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

    // Get the object we are going to move
    Task *task = [[Task alloc] init];
    task = [self.taskArray  objectAtIndex:[destinationIndexPath row]];
    
    // We will delete and move it to another location so well have to retain it
    //[task retain];
    
    // Remove it an move it to other place
    [self.taskArray removeObjectAtIndex:[sourceIndexPath row]];
    [self.taskArray insertObject:task atIndex:[destinationIndexPath row]];
}


     // Override to support conditional rearranging of the table view.
     - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
         if (indexPath.section == 1) {
             return YES;
         }
         return YES;
     }

我确实为每个 UITableViewCell 类添加了:

cell.showsReorderControl = YES;

但仍然没有运气,没有显示 readorderControl ......有人吗?有这么多教程,但对我不起作用,这是非常紧迫和烦人的。

编辑:

我更改了一些主题以包含事实,即我使用的是 UIViewController 而不是 UITableViewController。

4

2 回答 2

16

要在 a 中实现行重新排序UITableView,您需要实现tableView:canMoveRowAtIndexPath:and tableView:moveRowAtIndexPath:toIndexPath:,您可能还需要实现tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:

最重要的是,表格视图必须处于编辑模式才能显示重新排序控件。

于 2012-11-19T23:15:43.490 回答
0

尝试这个 。. .this 将在编辑模式下的简单表格视图的情况下处理单元格的排列和更新

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

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
     [tableData insertObject: [tableData objectAtIndex:sourceIndexPath.row] atIndex:destinationIndexPath.row];
     [tableData removeObjectAtIndex:(sourceIndexPath.row + 1)];
}
于 2013-11-04T09:47:13.033 回答