我已经实现了多选行,但是我要做的是当我们单击行时它将移至另一部分,这是我尝试的代码?

有人可以帮助我吗?提前致谢 ...

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
     return 2; //assuming you have only two sections
 }

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
     if (section == 0)
        return self.firstSectionDataSource.count;
     else if (section == 1)
        return self.dataArray.count;
     else
        return 0;
 }


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Here, Have to move row to another section while clcking ..

      // other multiselect code
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     // Configure a cell to show the corresponding string from the array.
    static NSString *kCellID = @"cellID";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellID];
    cell.textLabel.text = [self.dataArray objectAtIndex:indexPath.row];

    return cell;
}


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

   @try {

    NSMutableArray *sourceArray = nil;
    if (sourceIndexPath.section == 0) {
        sourceArray = self.firstSectionDataSource;
    }
    else if (sourceIndexPath.section == 1)
    {
        sourceArray = self.dataArray;
    }


    NSMutableArray *destinationArray = nil;
    if  (destinationIndexPath.section == 0) {
        destinationArray = self.firstSectionDataSource;
    }
    else if (destinationIndexPath.section == 1)
    {
        destinationArray = self.dataArray;
    }


    NSString *stringToMov = [sourceArray objectAtIndex:sourceIndexPath.row];
    [sourceArray removeObject:stringToMov];
    [destinationArray insertObject:stringToMov atIndex:destinationIndexPath.row];

  }
  @catch (NSException *exception) {
      NSLog(@"exception = %@ \n reason = %@",exception,exception.reason);
  }

}

最佳答案

cellForRowAtIndexPath

[cell setShowsReorderControl:YES];


并且您需要正确实现以下UITableView委托和数据源方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2; //assuming you have only two sections
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 0)
        return firstSectionDataSource.count;
    else if (section == 1)
        return secondSectionDataSource.count;
    else
        return 0;
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{

    @try {

        NSMutableArray *sourceArray = nil;
        if (sourceIndexPath.section == 0) {
            sourceArray = firstSectionDataSource;
        }
        else if (sourceIndexPath.section == 1)
        {
            sourceArray = secondSectionDataSource;
        }


        NSMutableArray *destinationArray = nil;
        if  (destinationIndexPath.section == 0) {
            destinationArray = firstSectionDataSource;
        }
        else if (destinationIndexPath.section == 1)
        {
            destinationArray = secondSectionDataSource;
        }


        NSString *stringToMov = [[sourceArray objectAtIndex:sourceIndexPath.row] retain];
        [sourceArray removeObject:stringToMov];
        [destinationArray insertObject:stringToMov atIndex:destinationIndexPath.row];
        [stringToMov release];

    }
    @catch (NSException *exception) {
        NSLog(@"exception = %@ \n reason = %@",exception,exception.reason);
    }

}

09-16 02:08