UITableViewController에서 접을 수있는 섹션 헤더를 구현하고 있습니다.
섹션 당 표시 할 행 수를 결정하는 방법은 다음과 같습니다.
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.sections[section].isCollapsed ? 0 : self.sections[section].items.count
}
'isCollapsed'에 대한 부울과 함께 섹션 정보를 보유하는 구조체가 있습니다.
상태를 전환하는 방법은 다음과 같습니다.
private func getSectionsNeedReload(_ section: Int) -> [Int]
{
var sectionsToReload: [Int] = [section]
let toggleSelectedSection = !sections[section].isCollapsed
// Toggle collapse
self.sections[section].isCollapsed = toggleSelectedSection
if self.previouslyOpenSection != -1 && section != self.previouslyOpenSection
{
self.sections[self.previouslyOpenSection].isCollapsed = !self.sections[self.previouslyOpenSection].isCollapsed
sectionsToReload.append(self.previouslyOpenSection)
self.previouslyOpenSection = section
}
else if section == self.previouslyOpenSection
{
self.previouslyOpenSection = -1
}
else
{
self.previouslyOpenSection = section
}
return sectionsToReload
}
internal func toggleSection(_ header: CollapsibleTableViewHeader, section: Int)
{
let sectionsNeedReload = getSectionsNeedReload(section)
self.tableView.beginUpdates()
self.tableView.reloadSections(IndexSet(sectionsNeedReload), with: .automatic)
self.tableView.endUpdates()
}
확장 된 섹션을 축소 할 때 콘솔에서 모든 것이 잘 작동하고 애니메이션 효과를줍니다. [Assert]는 다음과 같습니다.
[Assert] preReloadFirstVisibleRow에 대한 새 전역 행 인덱스를 확인할 수 없습니다 (0).
이것은 동일한 열린 섹션인지 여부에 관계없이 (닫기) 또는 다른 섹션을 열고 이전에 열린 섹션을 '자동 닫기'하는지에 관계없이 발생합니다.
나는 데이터와 관련이 없다. 영구적입니다.
누락 된 내용을 설명하는 사람이 있습니까? 감사