Nice programing

하나의 UITableView 셀 / 행만 다시로드하고 애니메이션하는 방법은 무엇입니까?

nicepro 2020. 11. 6. 20:03
반응형

하나의 UITableView 셀 / 행만 다시로드하고 애니메이션하는 방법은 무엇입니까?


하나의 셀 / 행만 다시로드하고 애니메이션 할 수있는 방법은 무엇입니까? 지금은 일부 파일을 다운로드합니다. 파일 다운로드가 완료 될 때마다 완료 델리게이트를 호출하고 [tableview reload]를 호출합니다. 그러나 그러면 전체 테이블이 다시로드됩니다. 테이블이 깜박이지 않도록 어떻게 애니메이션을 적용 할 수 있습니까? 예를 들어 페이드 효과 등이 있습니다.

최대 인사


다음 UITableView인스턴스 방법을 사용하십시오 .

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

당신은 지정해야 NSArrayNSIndexPaths당신이 다시로드 할 것인지를. 재장 전하고 싶다면. 당신은 단지 하나 개의 셀을 다시로드 싶은 경우에, 당신은 제공 할 수 있습니다 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)

특정 셀을 다시로드하려면


tableViewat의 특정 셀을 다시로드하려면 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

반응형