하나의 UITableView 셀 / 행만 다시로드하고 애니메이션하는 방법은 무엇입니까?
하나의 셀 / 행만 다시로드하고 애니메이션 할 수있는 방법은 무엇입니까? 지금은 일부 파일을 다운로드합니다. 파일 다운로드가 완료 될 때마다 완료 델리게이트를 호출하고 [tableview reload]를 호출합니다. 그러나 그러면 전체 테이블이 다시로드됩니다. 테이블이 깜박이지 않도록 어떻게 애니메이션을 적용 할 수 있습니까? 예를 들어 페이드 효과 등이 있습니다.
최대 인사
다음 UITableView
인스턴스 방법을 사용하십시오 .
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
당신은 지정해야 NSArray
의 NSIndexPaths
당신이 다시로드 할 것인지를. 재장 전하고 싶다면. 당신은 단지 하나 개의 셀을 다시로드 싶은 경우에, 당신은 제공 할 수 있습니다 NSArray
하나를 보유하고 그 NSIndexPath
. 예를 들면 :
NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:3 inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[myUITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
UITableViewRowAnimation
행 새로 고침을 애니메이션하는 모든 가능한 방법에 대한 열거 형을 볼 수 있습니다 . 애니메이션을 원하지 않는 경우 UITableViewRowAnimationNone
예제와 같이 값을 사용할 수 있습니다 .
특정 행을 다시로드하면 단순히 원하는 애니메이션 효과를 얻는 것보다 더 큰 이점이 있습니다. 또한 실제로 다시로드해야하는 셀만 데이터를 새로 고치고, 재배치하고, 다시 그리므로 성능이 크게 향상됩니다. 셀의 복잡성에 따라 셀을 새로 고칠 때마다 상당한 오버 헤드가 발생할 수 있으므로 새로 고치는 횟수를 줄이는 것은 가능한 한 사용해야하는 필수 최적화입니다.
tableview 셀의 텍스트 만 업데이트해야하는 경우 ..
UITableViewCell *cell = [_myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
cell.textLabel.text = [NSString stringWithFormat:@"%i", (int)_targetMaxDistanceSlider.value];
Apple Document 는 새로운 구문으로 완료했습니다.
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
빠른
당신이 사용할 수있는
let selectedIndexPath = IndexPath(item:0 , section: 0)
self.tableView.reloadRows(at: [selectedIndexPath], with: .none)
특정 셀을 다시로드하려면
tableView
at의 특정 셀을 다시로드하려면 indexPaths
의 배열 을 indexPaths
만든 다음에서 함수를 호출 reloadRowsAtIndexPaths
해야합니다 tableView
.
다음은 그 예입니다.
스위프트 5 :
let indexPathsToReload = [indexPath1, indexPath2, indexPath3]
tableView.reloadRows(at: indexPathsToReload, with: .none)
목표 C :
NSArray *indexPaths = @[indexPath1, indexPath2, indexPath3];
[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
또는
NSArray *indexPaths = [NSArray arraywithobject:@"indexPath1", @"indexPath2", @"indexPath3",nil];
[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
참고 URL : https://stackoverflow.com/questions/5418655/how-to-reload-and-animate-just-one-uitableview-cell-row
'Nice programing' 카테고리의 다른 글
LINQ를 사용하여 문자열에 숫자가 하나 이상 있는지 확인 (0) | 2020.11.06 |
---|---|
NSString에서 영숫자가 아닌 문자 제거 (0) | 2020.11.06 |
Rails 3 : 오늘 날짜를 특정 시간대로 가져 오는 방법은 무엇입니까? (0) | 2020.11.06 |
NSString에서 단일 NSString 문자를 얻는 방법 (0) | 2020.11.06 |
JavaScript로 요소 CSS 표시 확인 (0) | 2020.11.06 |