我是iOS開發人員和開發iOS 8,XCode 6.3,Swift 1.2的第一個應用程序的新手。我隱藏和顯示UICollectionView中的部分有一個小問題。從代碼隱藏/顯示UICollectionView中的節(swift)
所以我有一個主ViewController.swift,SettingsViewController.swift。我的任務是隱藏/顯示部分,SettingViewController中每個部分的一個開關控件。
我有一個下面的模型: 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
}
}
在ViewController.swift我創建的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)
}
和數據源方法實現顯示每個成員組和一個組是一個部分,組的名稱在該部分的標題視圖中指定。餘負載組的組陣列,取決於用戶設置在啓動:
func LoadGroups() -> Void {
Groups = []
if ShowGroup1 {
Groups.append(Group1)
}
if ShowGroup2 {
Groups.append(Group2)
}
if ShowGroup3 {
Groups.append(Group3)
}
}
我有SEGUE方法從SettingsViewController獲得值並重新加載其當我點按SettingsViewController保存按鈕稱爲組,方法是在所定義所述的ViewController:
@IBAction func saveSettings(segue:UIStoryboardSegue) {
if let settingsViewController = segue.sourceViewController as? SettingsViewController {
ShowGroup2 = settingsViewController.ShowGroup2
LoadGroups()
}
}
在方法LoadGroup()我決定清除組陣列加載它同樣取決於改變的設置敲擊開關控制之後。
問題:當我點擊開關控件使ShowGroup2爲false時,我點擊保存按鈕,主視圖出現,現在我滾動收集並出現致命錯誤:「致命錯誤:數組索引超出範圍」。
在官方文檔中:「除了將其嵌入到您的用戶界面中,您還可以使用UICollectionView對象的方法來確保項目的可視呈現與數據源對象中的順序相匹配。我添加了UICollectionView的插座,並嘗試刪除使用func deleteSections(_ sections:NSIndexSet)的部分,但我沒有看到此插座的方法。請幫助以正確的方式刷新收集視圖。
感謝的端更新:d如我之前所述,我已經加入出口託收視圖,但插座有錯誤類型的UIView而不是UICollectionView 。但在這種情況下,我需要調用deleteSections()方法?我如何刪除和添加動畫部分? – Anton