У меня есть проект iOS, над которым я работаю в Xcode 7 с использованием Swift 2. У меня есть array
с именем details
со словарем, который включает в себя String
и значение Int
. Int
называется cellOrder
в Class
и идея состоит в том, чтобы отсортировать details
array
в TableView
с каким-то на основе значения в cellOrder
Int
.Swift 2 TableView Sorting
Массив показывает значения String
, которые являются именами. Я посмотрел here, чтобы попытаться реализовать это в моем проекте без успеха.
Вот мой массив:
// Array of data for the TableView
var details = [ProjectDetails]()
Вот мой TableView
Код:
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return details.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel!.text = details[indexPath.row]
return cell
}
Как сделать вид, и где бы я поставил код, ViewDidLoad()
или, может быть cellForRowAtIndexPath
?
UPDATE:
Мой ViewDidLoad()
:
override func viewDidLoad() {
super.viewDidLoad()
// TableView Sorting
details.sortInPlace({$0.cellOrder < $1.cellOrder})
tableView.delegate = self
...
}
Update 2:
Мои ProjectDetails
class
для данных array
является:
import UIKit
class ProjectDetails: NSObject, NSCoding {
// MARK: Properties
var fileName: String
var cellOrder: Int
...
}
Я добавил новый элемент массиву с 'cellOrder' из 0 и перезагрузил« TableView », но сохранил старый тип на основе« IndexPath ». Он был единственным с 0 как «cellOrder». – ChallengerGuy
После сортировки вам нужно вызвать 'reloadData()' в UITableView. Это необязательно после сортировки в viewDidLoad, так как это происходит до заполнения таблицы. – diatrevolo
Я положил его в свой 'ViewDidLoad'. Это был первый пункт в нем. – ChallengerGuy