В RootPageViewController
viewDidLoad
добавить цель кнопки второго вида контроллера к self
и добавить метод addData
к RootPageViewController
.Вы можете использовать setViewControllers
и перейти к последнему контроллеру представления в этом методе
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
if let secondViewController = viewControllerList[1] as? SecondViewController {
self.setViewControllers([secondViewController], direction: .forward, animated: false, completion: nil)
secondViewController.button.action = #selector(addData(_:))
}
}
@IBAction func addData(_ sender: Any) {
if let thirdViewController = viewControllerList.last {
self.setViewControllers([thirdViewController], direction: .forward, animated: false, completion: nil)
}
}
ИЛИ
Сохранить метод addData в MainViewControlle и добавить к нему протокол, напримерthis
protocol MainVCDelegate {
func buttonPlusTapped()
}
class MainViewController: UIViewController {
@IBOutlet var buttonPlus: UIBarButtonItem!
var delegate: MainVCDelegate?
@IBAction func addData(_ sender: Any) {
delegate?.buttonPlusTapped()
}
}
В RootPageViewController подтвердите этому делегату и добавьте метод делегата
class RootPageViewController: UIPageViewController, UIPageViewControllerDataSource, MainVCDelegate {
func buttonPlusTapped() {
if let thidViewController = viewControllerList.last {
self.setViewControllers([thidViewController], direction: .forward, animated: false, completion: nil)
}
}
lazy var viewControllerList:[UIViewController] = {
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc1 = sb.instantiateViewController(withIdentifier: "timelineView")
let vc2 = sb.instantiateViewController(withIdentifier: "mainView") as! MainViewController
vc2.delegate = self
let vc3 = sb.instantiateViewController(withIdentifier: "addView")
return [vc1, vc2, vc3]
}()
}