본문 바로가기

Development/IOS & Mac

UITableView Cell Moving Control

보통 아래의 코드로 UITableView의 이동이 가능하도록 만들었다. 그렇지만 특정 Index에 접근을 할 수 없게는 만들수가 없다. 


- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
        if (indexPath.row >= [dataList count]) return NO;
        return YES;
    }


아래의 메소드를 활용하면 특정 index로 순서가 바뀌지 않도록 방지할 수 있다.


- (NSIndexPath *)tableView:(UITableView *)tableView
    targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath
                         toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
{
    if (... some condition ...) {
        return sourceIndexPath;
    }
    return proposedDestinationIndexPath;
}