ios - 尝试在 pageViewController 中以编程方式更改 View 时崩溃

标签 ios swift uipageviewcontroller

我正在尝试以编程方式切换到 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") 作为!评级内容 View

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

谢谢,

最佳答案

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

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

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

关于ios - 尝试在 pageViewController 中以编程方式更改 View 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624895/

相关文章:

swift - io将 SWRevealViewController 中的滑入和滑出动画更改为淡入和淡出

ios - iphone 上的 NSStream 无法正常工作

ios - 将 tableview 行标题传递给 viewcontroller swift

ios - Swift 中的 PageViewController,索引一直评估为 nil

ios - 使用自动布局在 TableView 单元格中自动调整 UIImageView 的大小

objective-c - 进入游戏中心沙盒失败

ios - pageViewController 点击选择 UI 怎么做?

iphone - 将一个(垂直的)UIPageViewController 嵌套在另一个(水平的)UIPageViewcontroller 中

ios - 单个 HTTP 请求中的双请求 header

iOS 应用内购买 : Objective-c