ios8 - Hide/show sections in UICollectionView from code (swift) -
i new ios development , developing first app ios 8, xcode 6.3, swift 1.2. have small problem hiding , showing sections in uicollectionview.
so have main viewcontroller.swift, settingsviewcontroller.swift. task hide/show sections, 1 switch control every section in settingviewcontroller.
i have following model: member.swift:
class member { var name: string var image: string init (name: string, image: string){ self.name = name self.image = image } } group.swift:
class group { var name: string var members: [member] init (name: string, members: [member]){ self.name = name self.members = members } } in viewcontroller.swift create objects data source of uicollectionview
class viewcontroller: ... var groups: [group] = [] var group1 = group(name: "group 1", members: []) var group2 = group(name: "group 2", members: []) var group3 = group(name: "group 3", members: []) override func viewdidload() { ... createmembers() loadgroups() } func createmembers() -> void { var member1 = member(name: "member 1 in group 1", image: "face1") var member2 = member(name: "member 2 in group 2", image: "face2") var member3 = member(name: "member 3 in group 3", image: "face3") group1.members.append(member1) group2.members.append(member2) group3.members.append(member3) } and data source methods implemented show members in each group, , 1 group section, name of group specified in header view of section. load groups groups array depending on user settings @ start:
func loadgroups() -> void { groups = [] if showgroup1 { groups.append(group1) } if showgroup2 { groups.append(group2) } if showgroup3 { groups.append(group3) } } i have segue method value settingsviewcontroller , reload groups called when tap save button in settingsviewcontroller, method defined in viewcontroller:
@ibaction func savesettings(segue:uistoryboardsegue) { if let settingsviewcontroller = segue.sourceviewcontroller as? settingsviewcontroller { showgroup2 = settingsviewcontroller.showgroup2 loadgroups() } } in method loadgroup() decided clear groups array load again depending on changed settings after tapping on switch control.
problem: when tap on switch control make showgroup2 false, tap save button, main view appeared, scroll collection , fatal error appeared:"fatal error: array index out of range".
in official documentation: "besides embedding in user interface, use methods of uicollectionview object ensure visual presentation of items matches order in data source object." added outlet uicollectionview , trying delete section using func deletesections(_ sections: nsindexset) , not see method outlet. please right way refresh collection view.
add outlet uicollectionview can use in code. try adding call reload uicollectionview when data updated @ end of loadgroups()
collectionview.reloaddata()
Comments
Post a Comment