【问题标题】:Crash when trying to change view programmatically in a pageViewController尝试在 pageViewController 中以编程方式更改视图时崩溃
【发布时间】:2016-06-04 08:18:00
【问题描述】:

我正在尝试以编程方式切换到 pageViewController 上的下一页。我正在使用单个 contentViewController,我在其中根据页面索引编辑内容。

这是我的代码:

 override func viewDidLoad() {




    self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("RPageViewController") as! UIPageViewController

    self.pageViewController.dataSource = self

    let startVC = self.viewControllerAtIndex(0) as RatingContentView
    let viewControllers = NSArray(object: startVC)

    self.pageViewController.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: true, completion: nil)

    self.pageViewController.view.frame = CGRectMake(0, 30, self.view.frame.width, self.view.frame.size.height - 35)

    self.addChildViewController(self.pageViewController)
    self.view.addSubview(self.pageViewController.view)
    self.pageViewController.didMoveToParentViewController(self)

}



func viewControllerAtIndex(index: Int) -> RatingContentView{

    if ((self.pageTitles.count == 0) || (index >= self.pageTitles.count)) {

        return RatingContentView()
    }

    let vc: RatingContentView = self.storyboard?.instantiateViewControllerWithIdentifier("RatingContentView") as! RatingContentView


    if index != 0 {
        vc.name = self.arrayParticipants[index - 1]
        vc.pictureName = self.arrayPictureOfParticipants[index - 1]
    }
    vc.pageIndex = index
    vc.totalCount = self.arrayParticipants.count

    self.indexOfSlide = index

    return vc

}

  func setNextPage() {


    let startVC = self.viewControllerAtIndex(indexOfSlide + 1) as RatingContentView
    let viewControllers = NSArray(object: startVC)

    self.pageViewController.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: true, completion: nil)

      }

它不会在日志中打印任何错误,它只是崩溃并将错误指向此行: 让 vc: RatingContentView = self.storyboard?.instantiateViewControllerWithIdentifier("RatingContentView") 为!评分内容视图

我尝试了许多解决方案来克服这个问题,包括将上面的行放在 viewDidLoad 中,但没有一个奏效。 我正在尝试在功能时转到下一张幻灯片 设置下一页() 被调用。

谢谢,

【问题讨论】:

    标签: ios swift uipageviewcontroller


    【解决方案1】:

    您是否尝试过检查故事板不为零?我没看到你在哪里设置它。如果它是 nil 你可能需要在调用 instantiateViewControllerWithIdentifier 之前实例化它:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    

    另一件可能会出错的事情是在此处或在故事板编辑器中拼错标识符(“RatingContentView”)。

    【讨论】:

    • 感谢您的建议。这并没有解决问题,我有一个在线:“self.pageViewController.setViewControllers(viewControllers as?[UIViewController],方向:.Forward,动画:true,完成:nil)错误是:意外发现nil而展开可选值。
    • 我面临着类似的问题 self.pageViewController?.view.frame = CGRect(x: 0, y:0, width: self.baseView.frame.size.width, height: self. baseView.frame.size.height) 抛出错误:错误是:在展开可选值时意外发现 nil。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多