以编程方式在页面视图控制器中切换视图控制器|斯威夫特

时间:2018-07-20 04:18:35

标签: ios swift

我在UIButton的{​​{1}}中有一个View Controller(也是通过编程创建的)。我想在同一页面视图控制器中切换到另一个Page View Controller。这是我尝试使用的:

View Controller

这种明了的方法是行不通的(我正在尝试切换到proposalPage)。我尝试过的另一种方法是:

@objc func myOpinionAction(_ sender:UIButton!)
{
    PageViewController().setViewControllers([suggestionPage()], direction: UIPageViewController.NavigationDirection.forward, animated: true)
}

这给了我线程1:我的信号SIGABRT 错误:

PageViewController().transition(from: PageViewController().viewControllers![0], to: PageViewController().viewControllers![2], duration: 0.3, options: UIView.AnimationOptions.curveEaseInOut, animations: nil, completion: nil)

我的class AppDelegate: UIResponder, UIApplicationDelegate { 中的第一行代码,我认为这是由于期权问题的解决? 有谁知道我是错误地使用了函数还是有更好的方法呢?

2 个答案:

答案 0 :(得分:0)

尝试一下

func forward() {
        if currentPageIndex < totalPageIndex {
            pageController?.setViewControllers([viewControllerAtIndex(index: currentPageIndex + 1)], direction: .forward, animated: true, completion: nil)
        }
    }

    func backward() {
        if currentPageIndex > 0 {
            pageController?.setViewControllers([viewControllerAtIndex(index: currentPageIndex - 1)], direction: .reverse, animated: true, completion: nil)
        }
    }

答案 1 :(得分:0)

按以下说明更改代码。在编写PageViewController()时,这意味着您正在创建类型为PageViewController的新对象,并且试图在该对象实例上设置页面,该页面未添加到视图中。

@objc func myOpinionAction(_ sender:UIButton!)
{
    pageViewController.setViewControllers([suggestionPage()], direction: UIPageViewController.NavigationDirection.forward, animated: true)
}