2016-08-29 2 views
0

ViewController에서 tableView를 설정했습니다. 이 테이블 뷰에는 1 섹션, 2 프로토 타입 셀이 있습니다. 하나는 섹션의 행 수를 반환하는 데 사용되고 다른 하나는 사용자 지정 헤더를 표시하는 데 사용됩니다.전의 tableView : viewForHeaderInSection : 호출됩니다 - Swift

  • viewDidAppear()에서 self.loadData() 기능 NSUserDefaults에서 데이터를 검색하기 위해 호출된다. 이 데이터는 tableView:viewForHeaderInSection:에서 사용되어 헤더 섹션에 레이블을 채 웁니다. viewDidAppear()이 호출되기 전에 tableView:viewForHeaderInSection:이 자동으로 호출되므로 머리글 섹션의 레이블에 NSUserDefaults에서 검색 한 데이터가 채워지지 않는 것이 문제입니다. tableView:viewForHeaderInSection:을 호출하기 전에 어떻게 self.loadData()에 전화 할 수 있습니까?

+0

viewWillAppear 사용 – Shades

+0

@Shades 내가 viewWillAppear를 사용하면 .Checkmark 액세서리가 이전에 선택한 행에 더 이상 표시되지 않습니다. NSUserDefaults에 기록 된 indexPath를 기반으로 체크 표시를 지정합니다. – bibscy

+1

@matt가 말했듯이, 데이터를로드 한 후에 tableView.reloadData()를 호출하여 검색 한 모든 데이터를 채 웁니다. – Shades

답변

1

이것은 일반적인 문제입니다. 테이블보기가 처음 나타날 때 데이터가 준비되지 않았습니다. 테이블 뷰 데이터 소스와 델리게이트가 현재 상황을 고려하여 요청되는 질문에 대한 정답을 제공하기 만하면됩니다. 데이터가 없다면, 예를 들어 섹션이 없다고 말하십시오. 데이터가 있으면 테이블보기에서 reloadData으로 전화하여 질문을 다시 받으십시오.

관련 문제