Ios 关闭SWIFT时,Tableview将重新加载两次

Ios 关闭SWIFT时,Tableview将重新加载两次,ios,swift,uitableview,Ios,Swift,Uitableview,我有两个风投。第一个是MealsVC,它的桌面上摆满了食物。第二个是DetailsVC(膳食细节)。当用户从tableviewDetailsVC中选择一顿饭时,弹出菜单,当用户点击X按钮时,DetailsVC被取消。但是,餐食会再次重新加载,并创建双餐(6餐而不是3餐) 我在某个地方找到了一个解决方案,但根本不起作用。下面是我如何从DetailsVC到MealsVC(从解决方案中)退出的 在MealsVC` override func viewDidLoad() { super.vie

我有两个风投。第一个是MealsVC,它的桌面上摆满了食物。第二个是DetailsVC(膳食细节)。当用户从tableview
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")
}

}

}