2017-02-07 66 views
0

我試圖根據其位置對用戶進行分組。例如,紐約市的任何人都應該在紐約市中心的桌面視圖下,任何在洛杉磯的人都應該在該欄目下。UiTableView以編程方式按部分整理項目

//Sets up the sections 
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { 

    //Sets the header view 
    guard let header = view as? UITableViewHeaderFooterView 
     else { 
      return 
    } 

    //Sets the properties. 
    view.tintColor = ChatMessageCell.indexedColor 
    header.textLabel?.textColor = UIColor.white 
    header.textLabel?.font = UIFont(name: "Open Sans Bold", size: 11) 
    header.backgroundColor = ChatMessageCell.indexedColor 
    header.textLabel?.textAlignment = .center 

    //Sets the variable headerText = to the text labels header 
    self.headerText = header.textLabel?.text! 

} 

我創建了一個名爲headerText的變量,用於存儲標題的文本標籤。 在numberOfRowsInSection中,我將用戶的位置與標題標題進行比較。如果他們匹配,我回報用戶,但如果他們不這樣做,沒有什麼應該返回

//Sets the number of rows equal to the amount of Users. 
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    //Observes the users (Firebase 
    refHandle = ref.child("Users").observe(.childAdded, with: { (snapshot) in 

     if let dictionary = snapshot.value as? [String : AnyObject]{ 
      let user = Users() 
      user.id = snapshot.key 
      user.setValuesForKeys(dictionary) 


      //If statement to see if their location is equal to header it should be under 
      //This array is empty + meant to store only the users whose location is equal to the section title 
      if user.location == self.headerText{ 
       return user 
      } 
      else{ 
       return 0 
      } 

     } 
    }) 

} 

回答

0

我覺得你的代碼有兩個問題:

  • 創建/修改標題的意見,你應該實現viewForHeaderInSection (而不是willDisplayHeaderView做)
  • 你應該的莫名其妙當前頭的儲存狀態數據(如headerText)。這高度依賴於表格顯示標題和單元格的順序的框架實現細節。

所以你需要differend方法來訪問你的分組/標題條件和訪問單元格數據。

一個小示例:

  • 首先,將calulate區段/位置(在某處或viewDidLoadviewDidAppear),按字母順序對它們進行排序,並將它們存儲在例如名爲一個陣列locations或以某種方式。
  • numberOfRowsInSection返回的位置號碼(如locations.count
  • viewForHeaderInSection你會檢索數據beloning所提供的部分,例如:return locations[section]
  • numberOfRowsInSection你會統計用戶的beloning給定段
  • cellForRow你會計算然後返回一個包含用戶數據的單元格
相關問題