@G_r_i_n_v_i_c_h

Как обновить данные во ViewController'е после dismiss() во всплывающем?

Друзья, день добрый. Совсем новый в Swift. Заранее прошу прощения, если вопрос через чур тупой.

Есть метод, который получает по API список контрагентов:

class SupplierViewController: UIViewController {

    @IBOutlet weak var suppliersTableView: UITableView!
    
    var suppliers: [Supplier] = []
    
    func fetchSupplierList()  {
        SupplierService.fetch(url: "http://localhost:8000/finance/api/suppliers/") { result in
            switch result {
            case .success(let suppliers):
                self.suppliers = suppliers
                self.suppliersTableView.reloadData()
            case .failure(let error):
                print("Failed to fetch suppliers", error)
            }
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        suppliersTableView.delegate = self
        suppliersTableView.dataSource = self
        
        fetchSupplierList()
    }
    
    @IBAction func addButtonPressed(_ sender: UIButton) {
        performSegue(withIdentifier: "addSupplierSegue", sender: self)
    }
    
}


По нажатию на кнопку Добавить перехожу во вью с формой, надо после заполнения полей и осуществления POST вернуться в таблицу и заново загрузить данные с сервера.

class AddSupplierViewController: UIViewController {

    @IBOutlet weak var name: UITextField!
    
    @IBOutlet weak var shortName: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    

    @IBAction func addSupplierPressed(_ sender: UIButton) {
        guard let name = name.text else { return }
        guard let shortName = shortName.text else { return }
        
        SupplierService.createSupplier(url: "http://localhost:8000/finance/api/suppliers/", name: name, short_name: shortName, inn: "123456") { error in
            if let error = error {
                print("Failed to create", error)
                return
            }
            DispatchQueue.main.async {
                self.dismiss(animated: true, completion: nil)
            }
            
        }
    }
}

Пробовал засунуть вызов fetchSupplierList() в комплишн дисмиса, пробовал во viewWillDissapear AddSupplierViewController'а. Пробовал во viewDidAppear SupplierViewController'а. Ничего не получилось :(
  • Вопрос задан
  • 350 просмотров
Решения вопроса 1
ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode
Тру вей использовать делегаты.

Можете попробовать закостылять через parent и приведение типа. Не рекомендую.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы