UITableView

2014. 10. 28. 17:51개발자료/iOS


반응형

UITableView

## Separator 이슈

if ([m_tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    [m_tableView setSeparatorInset:UIEdgeInsetsZero];
    [m_tableView setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, 0)];
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
    }
    
    if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [tableView setLayoutMargins:UIEdgeInsetsZero];
    }
    
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

 

## Empty UITableViewCell Line 없애기

UITableView에 데이터가 화면에 꽉찰만큼 없을때 내용이 없는 UITableViewCell 이 출력된다. 
이 UITableViewCell 은 하단에 선을 포함하고 있다. 
여기에 적힌 내용은 이 선을 없애는 방법이다. 
Footer View 에 아무것도 없는 View를 붙여서 더이상 출력되지 않도록 하는게 핵심이다. 
# iOS SDK >= 7.0 

self._tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 


# iOS SDK < 7.0 

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { 
    return 0.01f; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ 
    return [UIView new]; 
}

 

## 셀 이동

# 이동 동작 설정

//-- 수정 모드, 셀 이동 가능
[m_tableView setEditing:YES animated:YES];
//-- 비수정 모드, 셀 이동 불가
[m_tableView setEditing:NO animated:YES];

# UITableViewDataSource Delegate 

//-- 편집 모드가 되었을때 해당행이 지움 또는 추가 버튼을 보일지 선택한다.
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleNone;
}

//-- 해당 행이 추가 또는 삭제 작업이 가능한지 판단. NO를 반환하면 편집되지 않는다.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
    return YES;
}

//-- 해당 행이 이동가능한지를 리턴한다.
- (BOOL) tableView:(UITableView *)tableViewe canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
    return YES;
}

//-- 실제 이동이 이루어졌기 때문에 내부적인 데이터 구조를 재 설정한다.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
    //-- 배열 순서 변경 처리
    id object = [m_arrTableData objectAtIndex:sourceIndexPath.row];
    [m_arrTableData removeObjectAtIndex:sourceIndexPath.row];
    [m_arrTableData insertObject:object atIndex:destinationIndexPath.row];
}
반응형

'개발자료 > iOS' 카테고리의 다른 글

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7)  (0) 2014.10.28
UITextField  (0) 2014.10.28
핫스팟 상태체크(꼼수)  (0) 2014.10.28
UIDatePicker  (0) 2014.10.28
NSDate, NSDateFormat  (0) 2014.10.28