如何将UITableViewCell拖放到UITableView的底部。

时间:2016-07-28 06:33:24

标签: ios objective-c uitableview

一个UITableView,其UITableViewCell为20行,每行上都有一个按钮,单击按钮我想将UITableViewCell放到UITableView的底部。

是否有任何委托方法可以做到这一点。 您的反馈将不胜感激。

2 个答案:

答案 0 :(得分:1)

是的,tableview上有一个方法

- (void)moveRowAtIndexPath:(NSIndexPath*)indexPath
               toIndexPath:(NSIndexPath*)newIndexPath

您可以阅读更多https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/occ/instm/UITableView/moveRowAtIndexPath:toIndexPath

答案 1 :(得分:1)

是的,有一个!

使用以下代理方法:

必须返回YES以允许根据您的要求移动canMoveRowAtIndexPath委托方法中的tableView行,

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0) // Don't move the first row
      return NO;

   return YES;
}

然后,使用moveRowAtIndexPath委托方法相应地更新重定位行的数据模型数组,

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

      //Updating the data-model array
}

按下按钮中的moveRowAtIndexPath

- (void)btnClick:(UIButton*)sender
{
    UITableViewCell *cell = (UITableViewCell *)sender.superview;
    NSIndexPath *indexpath = [tableView indexPathForCell:cell];

    //Change accordindly as per requirement 
    [tableView moveRowAtIndexPath:[NSIndexPath indexPathForItem:indexpath.row inSection:indexpath.section] toIndexPath:[NSIndexPath indexPathForItem:0 inSection:indexpath.section]];

}

另外,请阅读Apple文档:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/ManageReorderRow/ManageReorderRow.html