Swift 2 TableView排序

时间:2016-02-02 19:45:13

标签: ios sorting swift2 tableview

我有一个iOS项目,我正在使用Swift 2在Xcode 7中工作。我有array名为details的字典,其中包含String和{ {1}}价值。 Int中的Int被称为cellOrder,其目的是根据Classdetails array进行排序。 TableView cellOrder值。

数组显示名称为Int的值。我看了here试图将这个实现到我的项目中但没有成功。

这是我的阵列:

String

这是我的// 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

ViewDidLoad()

更新2

override func viewDidLoad() { super.viewDidLoad() // TableView Sorting details.sortInPlace({$0.cellOrder < $1.cellOrder}) tableView.delegate = self ... } ProjectDetails的{​​{1}}数据是:

class

2 个答案:

答案 0 :(得分:3)

要对数组进行排序 details.sortInPlace({$0.cellOrder < $1.cellOrder}) 在viewDidLoad中,或者您可以使用 details.sort({$0.cellOrder < $1.cellOrder})[indexPath.row] 在cellForRowAtIndexPath中,如果你不跟踪你的数组,这可能会很危险。

将对数组进行排序,一个将返回一个已排序的不可变数组。

如果你坚持不可分类地排序(超出这个范围有它的优点和缺点)将它分配给另一个数组并在你的逻辑中使用它。

答案 1 :(得分:1)

您必须对此数组details[]中的itens进行排序,之后,您可以调用tableView.reloadData()重新加载信息。

cellForRowAtIndexPath中,你必须把数据填入单元格,所以没有那里的东西!

在调用函数重新加载之前,在其他任何地方排序。