मैं एक UITableViewController में बंधनेवाला अनुभाग हेडर लागू कर रहा हूँ।
यहां बताया गया है कि मैं निर्धारित करता हूं कि प्रति अनुभाग कितनी पंक्तियों को दिखाना है:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.sections[section].isCollapsed ? 0 : self.sections[section].items.count
}
एक संरचना है जो अनुभाग की जानकारी को 'कैलेप्सड' के लिए बूल के साथ रखती है।
यहां बताया गया है कि मैं उनके राज्यों में कैसे पहुंच रहा हूं:
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()
}
सबकुछ काम कर रहा है और अच्छी तरह से एनिमेट कर रहा है, हालांकि कंसोल में जब एक विस्तारित खंड को ढहाया जाता है, तो मुझे यह मिलता है [मुखर]:
[जोर दें] PreReloadFirstVanishRow (0) के लिए नए वैश्विक पंक्ति सूचकांक का निर्धारण करने में असमर्थ
ऐसा होता है, भले ही यह एक ही खोला खंड, समापन (ढहने) हो, या यदि मैं एक और खंड खोल रहा हूं और पहले से खुले खंड को 'ऑटो-क्लोजिंग' कर रहा हूं।
मैं डेटा के साथ कुछ नहीं कर रहा हूँ; यह लगातार है।
किसी को समझाने में मदद कर सकता है क्या याद आ रही है? धन्यवाद