Arhn - архитектура программирования

Не перезагружать VC1 при возврате из CV2 - Swift

Я хотел бы перейти от 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
16.01.2019

  • Вы используете Tableview в VC1, чтобы показать все рестораны? 16.01.2019
  • @AbhishekJadhav Представление пользовательского интерфейса, представление таблицы 16.01.2019
  • Проверьте мой ответ 16.01.2019
  • Можете ли вы загрузить код VC1 @vanful 16.01.2019
  • @AbhishekJadhav, конечно. Я добавил это. 16.01.2019
  • Проверьте мой ответ 16.01.2019

Ответы:


1

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

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) 
16.01.2019
  • плохо сделал все, как вы сказали. Но все же, когда я возвращаюсь из VC2 в VC1, он снова перезагружается ... может, я что-то пропустил? 16.01.2019
  • Ваши данные обновляются после возвращения в VC1? 16.01.2019
  • Да, снова обновляется. Цель состоит в том, чтобы он не загружался снова, поскольку данные не изменятся, когда кто-то щелкнет из списка ресторанов в ресторан, а затем обратно в список ресторанов. 16.01.2019
  • Если вы вызываете API для обновления данных вашего ресторана, вызовите функцию API в этом блоке. 17.01.2019

  • 2

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

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
    
        self.tableview.reloadData() 
    
    }
    
    16.01.2019
  • в настоящее время мой контроллер для этого был следующим: 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) Нужно ли мне менять все это? Их тоже по-другому? Может быть, с .dismiss view и т. д.? 16.01.2019
  • Можете ли вы добавить этот код, чтобы я мог проверить, и что делает функция reloadJoinedData? 16.01.2019
  • Цель состоит в том, чтобы он не загружался снова, поскольку данные не изменятся, когда кто-то нажимает из списка ресторанов в ресторан, а затем обратно в список ресторанов. 16.01.2019

  • 3

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

     self.view.setNeedsDisplay()
    

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

    16.01.2019
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..