Если через делегат, то наверное примерно так, не проверял)
p.s. Я бы тут использовал нотификацию
protocol DataDelegate: class {
func data(rate: String)
}
class First: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
(tabBarController as? Tabbar)?.dataDelegate?.data(rate: "f*ck )")
}
}
class Second: UIViewController, DataDelegate {
func data(rate: String) {
print("RATE: ", rate)
}
}
class Tabbar: UITabBarController {
weak var dataDelegate: DataDelegate?
let firstNav = UINavigationController(rootViewController: First())
lazy var secondNav: UINavigationController = {
let vc = Second()
self.dataDelegate = vc
return .init(rootViewController: vc)
}()
override func viewDidLoad() {
super.viewDidLoad()
viewControllers = [firstNav, secondNav]
}
}
Прикольно, на форуме есть цензура)
protocol DataDelegate: class {
func data(rate: String)
}
class First: UIViewController {
weak var delegate: DataDelegate?
override func viewDidLoad() {
super.viewDidLoad()
delegate?.data(rate: "f*ck )")
}
}
class Second: UIViewController, DataDelegate {
func data(rate: String) {
print("RATE: ", rate)
}
}
class Tabbar: UITabBarController {
let firstNav = UINavigationController(rootViewController: First())
lazy var secondNav: UINavigationController = {
let vc = Second()
(firstNav.viewControllers.first as? First)?.delegate = vc
return .init(rootViewController: vc)
}()
override func viewDidLoad() {
super.viewDidLoad()
viewControllers = [firstNav, secondNav]
}
}
Ну или так)
protocol DataDelegate: class {
func data(rate: String)
}
class First: UIViewController {
weak var delegate: DataDelegate?
override func viewDidLoad() {
super.viewDidLoad()
//зависит от того как устрое у вас tabbar)
let vc = ((tabBarController?.viewControllers?[1] as? UINavigationController)?.viewControllers.first as? Second)
delegate = vc
delegate?.data(rate: "f*ck )")
}
}
class Second: UIViewController, DataDelegate {
func data(rate: String) {
print("RATE: ", rate)
}
}
Нужно проверить, писал в плейгроунд, может что и не так)