Не перезагружайте VC1 при переходе назад с CV2 - Swift - PullRequest
0 голосов
/ 16 января 2019

Я бы хотел перейти от VC1 (все виды ресторана) к VC2 (подробности ресторана), и при плохом нажатии кнопки «Назад» он не должен перезагружать VC1 снова.

Как я могу решить это?

func clickNameButtonCollectionView(sender: UIButton) {

        let restaurent_Id = ((self.allRecommendedRestaurent[sender.tag]  as AnyObject).value(forKey: "id") as AnyObject) as? Int

        let obj = self.storyboard?.instantiateViewController(withIdentifier: "ResturantDetailsController") as! ResturantDetailsController
        obj.restaurent_ID = restaurent_Id!
        self.navigationController?.pushViewController(obj, animated: true)
    }


@IBAction func backPressed(_ sender: Any) {
        self.navigationController?.popViewController(animated: true)
    }

Добавлено:

override func viewDidLoad() {
        super.viewDidLoad()

        self.refreshControl.addTarget(self, action: #selector(self.reloadJoinedData), for: UIControlEvents.valueChanged)
        self.mainScrollView?.addSubview(refreshControl)

        self.appDel.apiManager.setCurrentViewController(vc: self)

        // Do any additional setup after loading the view.

        resturantTable.delegate = self
        resturantTable.dataSource = self
        resturantTable.bounces = false
        resturantcollection.delegate = self
        resturantcollection.dataSource = self
        resturantcollection.bounces = false

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Пожалуйста, напишите этот код методом viewWillAppear в классе VC1:

 self.view.setNeedsDisplay()

Это может вам помочь. Спасибо.

0 голосов
/ 16 января 2019

Вы можете использовать блок для выполнения любых действий после нажатия кнопки «назад». Следуйте ниже код

1) Создать блок в вашем ResturantDetailsController

var back_block : (() -> Void)? = nil

2) Обновить действие кнопки «Назад» backPressed

@IBAction func backPressed(_ sender: Any) {
    if let action = back_block {
        action()
    }
    self.navigationController?.popViewController(animated: true)
}

3) Теперь в VC1 при создании ResturantDetailsController объекта.

    let obj = ResturantDetailsController.loadController()
    obj.back_block = {
        //reload Your TableView
    }
    obj.restaurent_ID = restaurent_Id!
    self.navigationController?.pushViewController(obj, animated: true) 
0 голосов
/ 16 января 2019

Если вы используете UITableView в VC1, затем перезагрузите его в viewWillAppear, тогда вы получите обновление или это вы обновите свой список

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    self.tableview.reloadData() 

}
...