При переходи с одного VC на второй VC, вычисляемые данные сразу не отображаются. Только если вернутся назад и снова перейти на второй вью. Если вынести расчет на одну кнопку, а переход на другую то все работает. В чем может быть дело?
Передача данных между VC
Я так понимаю основная ошибка в передачи данных, собственно код:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let tabBarController = segue.destination as? UITabBarController else {return}
let obyemVC = tabBarController.viewControllers?.last as! ObyemKonduktorViewController
let navigationVS = tabBarController.viewControllers?.first as! UINavigationController
let timeVC = navigationVS.topViewController as! TimeKonduktorViewController
timeVC.chikl = String(zhikl)
timeVC.prokachkaDoZaboy = String(prokachkaDoZaboy)
obyemVC.primer = String(zhikl)
}
Переход и расчет ведется по нажатию одной кнопки.
VC на который ведется передача данных:
import UIKit
class TimeKonduktorViewController: UIViewController {
@IBOutlet weak var litrazhLabel: UILabel!
@IBOutlet weak var chiklLabel: UILabel!
@IBOutlet weak var zaboynayLabel: UILabel!
@IBOutlet weak var prokachkaDoZaboyLabel: UILabel!
@IBOutlet weak var poltoraChiklaLabel: UILabel!
@IBOutlet weak var dvaChiklaLabel: UILabel!
var litrazh: String?
var chikl: String?
var prokachkaDoZaboy: String?
override func viewDidLoad() {
super.viewDidLoad()
chiklLabel.text = chikl
prokachkaDoZaboyLabel.text = prokachkaDoZaboy
}
}
Попробовал с нуля частично сделать VC с которого идет передача данных все работает нормально. В чем проблема с этим VC так и не разобрался
весь ввод данных через UITextfieldы
далее объявлены переменные, в IBaction присваиваются расчеты с отдельного класса.
Хотя и упрощал данную конструкцию.
не совсем точно выразился, сорри. Имелось в виду как данные приходят во второй вью контроллер?
Мне кажется вся проблема в том, что вы пытаетесь передать данные в обход TabBarController.
А второй раз при переходе данные передаются возможно из-за того, что TabBarController не удалился из памяти.
Попробуйте сперва передать все данные в TabBarController, а уже потом из него в каждый ViewController.
Проблему помог решить один знакомый: “Из-за того что ты перетянул сегвей от кнопки на экран, по нажатию на кнопку происходит переход раньше чем оно успевает посчитать, и в итоге мы не видим ничего в той переменной, а в следующий раз, они уже посчитаны , но это все ровно уже старые данные, если ты поменяешь какие-то цифры то оно так же не успеет пересчитать, и отобразит старые
Решение: перетянуть сегвей от контроллера к котроллеру, задать идентификатор сегвея, после, вызвать performSeque(with identifier: String, …), в экшэне кнопки, в конце, после того как все посчитается”
Получается мы бы вам никак не смогли помочь, т.к. у вас не написано было как протянут сегвей.