Bir UITableViewController daraltılabilir bölüm üstbilgileri uyguluyorum.
Bölüm başına kaç satır gösterileceğini şu şekilde belirleyebilirim:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.sections[section].isCollapsed ? 0 : self.sections[section].items.count
}
Bölüm bilgisini 'isCollapsed' için bir boole ile tutan bir yapı vardır.
Durumlarını şu şekilde değiştiriyorum:
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()
}
Her şey iyi çalışıyor ve canlandırıyor, ancak genişletilmiş bir bölümü daraltırken konsolda bunu alıyorum [Assert]:
[Assert] preReloadFirstVisibleRow (0) için yeni global satır dizini belirlenemedi
Bu aynı bölümün açık olup olmamasına, kapanmasına (daraltılmasına) veya başka bir bölümü açıp daha önce açık olan bölümü otomatik olarak kapatmamıza bakılmaksızın gerçekleşir.
Verilerle hiçbir şey yapmıyorum; bu kalıcı.
Neyin eksik olduğunu açıklamaya yardımcı olabilir misiniz? Teşekkürler