按字母顺序重新排序TableView

时间:2016-05-15 02:41:24

标签: swift uitableview

我有tableview,我通过"添加按钮添加单元格"和第二个视图控制器。我目前为我的tableview设置了以下代码,并在应用程序加载时按字母顺序对单元格进行排序。我的问题是,当我添加新配方时,它不会自动重新排序。做这个的最好方式是什么?我的reloadData()应该在其他地方吗?或者也许把它从视图控制器的Segue回到表视图?

override func viewDidLoad() {

        configureView()

        if let savedRecipes = loadRecipes() {
            recipes2 += savedRecipes

            recipes2 = recipes2.sort({current, next in return current.name < next.name})

            recipeList.reloadData()
        }
}

3 个答案:

答案 0 :(得分:2)

您可以将reloadData()添加到表格视图控制器中的viewWillAppear()viewDidAppear()方法。这样,每当您返回视图时,它应该显示最新的数据。例如:

override func viewDidAppear(animated: Bool) {
     super.viewDidAppear(animated)
     reloadData()
}

答案 1 :(得分:0)

如果食谱本身就是一个类,你可以这样做:

if let savedRecipes = loadRecipes() {
    recipes2 += savedRecipes

    recipes2.sortUsingComparator {
            let r1 = $0 as! Recipe
            let r2 = $1 as! Recipe
            if r1.title < r2.title {
                return .OrderedAscending
            }
            if r1.title == r2.title {
                return .OrderedSame
            }
            return .OrderedDescending
        }
        self.tableView.reloadData()
}

这将按升序对您的食谱进行排序。

答案 2 :(得分:0)

您可以使用ModelAssistant框架在表格视图中显示配方对象。这是一个在tableView和模型之间进行中介的库。您可以在viewcontroller的开头设置排序方法,然后将每个添加到模型的新配方设置为模型,模型将自动进行排序,并且tableview也将更新。