使用Swift对UITableview中的Backendless数据进行分组和排序

时间:2020-12-04 15:08:14

I'm looking to group and sort a list of users from backendless, similar to iPhone contacts. I want to add sectionIndexTitlesForTableView(_:), titleForHeaderInSection(_:), and sectionForSectionIndexTitle(_:). I haven't found a tutorial on how to do this, and I have been stuck for weeks.

我正在寻找对来自backendless的用户列表进行分组和排序,类似于iPhone联系人。我想添加sectionIndexTitlesForTableView(_ :),titleForHeaderInSection(_ :)和sectionForSectionIndexTitle(_ :)。我还没有找到关于如何做到这一点的教程,而且我已经被困了几个星期。

使用Swift对UITableview中的Backendless数据进行分组和排序

So far, I'm able to retrieve users and populate the table view. I also implemented UISearchBarDelegate.

到目前为止,我能够检索用户并填充表格视图。我还实现了UISearchBarDelegate。

var users: [BackendlessUser] = []
var filteredUsers : [BackendlessUser] = []

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    if tableView == self.tableView {

        return users.count

    } else {

        return self.filteredUsers.count
    }
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = UITableViewCell()

    if tableView == self.tableView {

        let user = users[indexPath.row]

    cell.textLabel?.text = user.name

    } else {

        let filteredUser = filteredUsers[indexPath.row]

        cell.textLabel?.text = filteredUser.name

    }

    return cell
}

1 个解决方案

#1


1  

You must have a dictionary of array (name 'data' for example)

你必须有一个数组字典(例如名称'数据')

data["A"] = ["Ananas", "Anaconda", "Apple"]

data["B"] = ["Banana", "Baby"]

...
data["Z"] = ["Zoro"]

begin:

let letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var headers: [String] = []
var data : [String: [String]] = [:]  // Choose your type

override func viewDidLoad(){
  // Do your stuff...

  headers = letters.keys.sort()

  // init your data var
  data = ...

  tableView.reloadData()
}
  • for header:

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    
      return headers.count
    }
    
    func sectionHeaderTitlesForTableView(tableView: UITableView) -> [String]?{
    
      return headers
    }
    
    func tableView: UITableView, titleForHeaderInSection section: Int) -> String?{
    
      return headers[section];
    }
    
  • for header:override func numberOfSectionsInTableView(tableView:UITableView) - > Int {   return headers.count } func sectionHeaderTitlesForTableView(tableView:UITableView) - > [String]?{   返回标题 } func tableView:UITableView,titleForHeaderInSection section:Int) - > String?{   return headers [section]; }

  • cell

    func tableView(tableView: UITableView, numberOfRowInSection section: Int) -> Int {
       // Exemple
       return data[section].count
    
    }
    
  • cell func tableView(tableView:UITableView,numberOfRowInSection section:Int) - > Int {    //例如    返回数据[section] .count }

#1


1  

You must have a dictionary of array (name 'data' for example)

你必须有一个数组字典(例如名称'数据')

data["A"] = ["Ananas", "Anaconda", "Apple"]

data["B"] = ["Banana", "Baby"]

...
data["Z"] = ["Zoro"]

begin:

let letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var headers: [String] = []
var data : [String: [String]] = [:]  // Choose your type

override func viewDidLoad(){
  // Do your stuff...

  headers = letters.keys.sort()

  // init your data var
  data = ...

  tableView.reloadData()
}
  • for header:

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    
      return headers.count
    }
    
    func sectionHeaderTitlesForTableView(tableView: UITableView) -> [String]?{
    
      return headers
    }
    
    func tableView: UITableView, titleForHeaderInSection section: Int) -> String?{
    
      return headers[section];
    }
    
  • for header:override func numberOfSectionsInTableView(tableView:UITableView) - > Int {   return headers.count } func sectionHeaderTitlesForTableView(tableView:UITableView) - > [String]?{   返回标题 } func tableView:UITableView,titleForHeaderInSection section:Int) - > String?{   return headers [section]; }

  • cell

    func tableView(tableView: UITableView, numberOfRowInSection section: Int) -> Int {
       // Exemple
       return data[section].count
    
    }
    
  • cell func tableView(tableView:UITableView,numberOfRowInSection section:Int) - > Int {    //例如    返回数据[section] .count }