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

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -