Ios 关闭SWIFT时,Tableview将重新加载两次
我有两个风投。第一个是MealsVC,它的桌面上摆满了食物。第二个是DetailsVC(膳食细节)。当用户从tableviewIos 关闭SWIFT时,Tableview将重新加载两次,ios,swift,uitableview,Ios,Swift,Uitableview,我有两个风投。第一个是MealsVC,它的桌面上摆满了食物。第二个是DetailsVC(膳食细节)。当用户从tableviewDetailsVC中选择一顿饭时,弹出菜单,当用户点击X按钮时,DetailsVC被取消。但是,餐食会再次重新加载,并创建双餐(6餐而不是3餐) 我在某个地方找到了一个解决方案,但根本不起作用。下面是我如何从DetailsVC到MealsVC(从解决方案中)退出的 在MealsVC` override func viewDidLoad() { super.vie
DetailsVC
中选择一顿饭时,弹出菜单,当用户点击X按钮时,DetailsVC
被取消。但是,餐食会再次重新加载,并创建双餐(6餐而不是3餐)
我在某个地方找到了一个解决方案,但根本不起作用。下面是我如何从DetailsVC
到MealsVC
(从解决方案中)退出的
在MealsVC`
override func viewDidLoad() {
super.viewDidLoad()
DataManager.shared.firstVC = self
并创建了singleton
import Foundation
class DataManager {
static let shared = DataManager()
var firstVC = MealsVC()
}
我还尝试执行从detailsVC
到MealsVC
的转换,但是tableView没有重新加载,它显示一个空的tableView
更新
在MealsVC中获取数据:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
getMeals()
}
func getMeals () {
Alamofire.request(url!, method: .post, parameters: para,encoding: URLEncoding.default, headers: headers).responseJSON { response in
if let value : AnyObject = response.result.value as AnyObject {
let meals = JSON(value)
// get meals code
let info = Meals(meal_id: id, Logo: logoString, meal_name: name, price: price)
self.meals.append(info)
}
}
DispatchQueue.main.async{
self.tableView.reloadData()
}
} else {
print("sorry data from api has some errors")
}
}
}
您可以删除所有以前的对象,或者仅在一次加载时使用一个标志。为什么要在dismise方法中重新加载tableView?@HarrySingh这是我找到的解决方案,它不起作用。即使我没有从tableview中重新加载表,也会显示与tableview数据源相关的代码及其更新位置。您应该将
getFines()
调用移动到viewDidLoad
,这样它只被调用一次。如果您想将其保留在原来的位置,请在分派中抛出调用一次,以便只调用一次。另一个解决方案是不要附加在self上。只需将其全部替换即可。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
getMeals()
}
func getMeals () {
Alamofire.request(url!, method: .post, parameters: para,encoding: URLEncoding.default, headers: headers).responseJSON { response in
if let value : AnyObject = response.result.value as AnyObject {
let meals = JSON(value)
// get meals code
let info = Meals(meal_id: id, Logo: logoString, meal_name: name, price: price)
self.meals.append(info)
}
}
DispatchQueue.main.async{
self.tableView.reloadData()
}
} else {
print("sorry data from api has some errors")
}
}
}