나는 앱의 어려운 충돌을 추적하려고합니다.indexPath를 가져온 후 해당 indexPath에서 셀을 제거하기 전에 reloadData()를 호출하는 것이 안전하지 않습니까?
나는 효과적으로 수행 일부 코드가이 :
if let indexPath = self.tableView.indexPath(for: myTableViewCell) {
// .. update some state to show a different view in the cell ..
self.tableView.reloadData()
// show nice fade out of the cell
self.friendRequests.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: .fade)
}
우려 reloadData()를 호출하면 어떻게 든 그 indexPath에서 셀을 삭제하려고 응용 프로그램 충돌, 그래서 난 그냥 잘못 검색 한 indexPath를 만드는 것입니다 . 그게 가능하니?
편집 :
- 사용자가 테이블 뷰 셀 <의 내부에 버튼을 추가 [친구] 탭 -
- 변경 버튼 여기 검색 indexPath :
사용자 상호 작용이있다 [추가됨] 탭을 수신했음을 보여줍니다. < - 여기에서 reloadData가 호출됩니다.
- 짧은 지연 (0.5 초) 후에 셀이 사라집니다. < - 여기에서 # 1에서 indexPath로 호출 된 삭제
코드를 변경하여 reloadData를 호출하지 않고 대신 셀보기 만 업데이트 할 수 있습니다. 그게 낫지? 내가 그렇게하지 않으면 어떻게 될까?
그냥이보고, 왜 당신은'reloadData()'에 대한 호출이 필요합니까? 이미 indexPath가 있으며 테이블보기에서 해당 셀을 제거하는 것처럼 보입니다. 'reloadData()'는 완전 재 구축을하기 때문에, 당신이 선택한 셀은 무효화 될 것입니다. – dstepan
테이블을 다시로드 한 다음 행 삭제를 애니메이션으로 처리한다는 생각은 조금 궁금합니다. 테이블을 다시로드해야합니까 (즉, 'myTableViewCell'을 변경하는 셀 이외의 셀도 변경됩니까?)? 다른 셀이 변경되는 경우 원하는 것을 달성하는 더 좋은 방법이있을 수 있습니다 (예 : 행을 제거한 다음 셀을 제거하고 다른 특정 셀을 다시로드하는 방법). 또는 다른 셀이 변경되지 않으면'reloadData'를 잃어 버립니다. 실제로 무슨 일이 일어나고 있는지 설명하고 더 나은 조언을 할 수 있습니다. – Rob
의견에 감사드립니다. 진행 상황을 자세히 설명하는 편집 섹션을 추가했습니다. –