Может кто-нибудь сказать мне, почему мой код не работает, как я ожидаю? Я хочу передать значение из ViewController в контроллер FVC. Я думаю, что проблема с контроллером страницы («ТЕСТ»).
Вот СС моей раскадровки:
А вот и мой код
class ViewController: UIViewController {
var a = "abcdefg"
var test : TEST!
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "first" {
if segue.destination.isKind(of: TEST.self) {
test = segue.destination as! TEST
test.b = a
}
}
}
}
И код для PageController
var b = ""
lazy var subViewControllers:[UIViewController] = {
return [
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "FVC") as! FVC,UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SVC") as! SVC,UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "TVC") as! TVC
]
}()
override func viewDidLoad() {
super.viewDidLoad()
dataSource = self
delegate = self
setViewControllerFromIndex(index: 0)
}
func setViewControllerFromIndex(index:Int) {
self.setViewControllers([subViewControllers[index]], direction: UIPageViewController.NavigationDirection.forward, animated: true, completion: nil)
}
}
extension TEST: UIPageViewControllerDelegate, UIPageViewControllerDataSource {
func presentationCount(for pageViewController: UIPageViewController) -> Int {
return subViewControllers.count
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex:Int = subViewControllers.index(of: viewController) ?? 0
if currentIndex <= 0 {
return nil
}
return subViewControllers[currentIndex-1]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex:Int = subViewControllers.index(of: viewController) ?? 0
if currentIndex >= subViewControllers.count-1 {
return nil
}
return subViewControllers[currentIndex+1]
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "FVC" {
let vc = segue.destination as? FVC
vc?.g = b
}
}
```}
And third Controller
``` class FVC: UIViewController {
var g = ""
override func viewDidLoad() {
super.viewDidLoad()
test()
}
func test(){
var s = "aaaaa" + g
print(s)
}
И как результат это должно быть "aaaaaabcdefg", но это "aaaaa". Буду признателен, если кто-нибудь подскажет, как передать данные с использованием такого сценария.