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(_ :)。我还没有找到关于如何做到这一点的教程,而且我已经被困了几个星期。
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]; }
-
cell
func tableView(tableView: UITableView, numberOfRowInSection section: Int) -> Int { // Exemple return data[section].count }
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 { //例如 返回数据[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]; }
-
cell
func tableView(tableView: UITableView, numberOfRowInSection section: Int) -> Int { // Exemple return data[section].count }
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 { //例如 返回数据[section] .count }