我有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()
}
}
答案 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也将更新。