gpt4 book ai didi

swift - PageViewController 不适用于 Swift 2.0

转载 作者:行者123 更新时间:2023-11-30 13:57:52 30 4
gpt4 key购买 nike

我有一个在 ios8 上运行良好的应用程序。但是,将所有内容更新到 ios9 后,我遇到了 null 值问题。我无法弄清楚什么值为零。这是代码:

func resetToChosenPage(index: Int!) {
/* Getting the page View controller */
pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController
self.pageViewController.dataSource = self

pageContentViewController = self.viewControllerAtIndex(index)

if pageContentViewController != nil {
self.pageViewController.setViewControllers([pageContentViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)
}
/* We are substracting 30 because we have a start again button whose height is 30*/
self.pageViewController.view.frame = CGRectMake(0, self.navigationController!.navigationBar.frame.height , self.view.frame.width, self.view.frame.height - 30)
self.addChildViewController(pageViewController)
self.view.addSubview(pageViewController.view)
self.pageViewController.didMoveToParentViewController(self)

}

func viewControllerAtIndex(index : Int) -> UIViewController? {


if((dataArray.count == 0) || (index >= dataArray.count)) {
return nil
}
let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("SingleArticleViewController") as! SingleArticleViewController

self.delegate = pageContentViewController
pageContentViewController.delegate = self
// pageContentViewController.delegateWebView = self

pageContentViewController.singleArticleIndex = index
pageContentViewController.categoryID = categoryID
pageContentViewController.dateOfPub = dataArray[index].pubDate
pageContentViewController.category = dataArray[index].category
pageContentViewController.newsTitle = dataArray[index].pageTitle
pageContentViewController.videoLink = dataArray[index].videoLink
return pageContentViewController
}

一行 self.pageViewController.SetViewControllers([pageContentViewController]... 我遇到错误“ fatal error :在展开可选值时意外发现 nil”。事实是这段代码在 ios8 上运行良好。我检查了但找不到nil值。此外,我检查了storyboard的所有标识符,但它们都是正确的。伙计们,如果这段代码在ios8上运行会出现什么问题?

最佳答案

我建议尝试更改包装 setViewControllers: 调用的 if 子句,以便它显式检查 pageContentViewController 和 pageViewController:

if let pageVC = self.pageViewController, let contentVC = self.pageContentViewController {
pageVC.setViewControllers([contentVC], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)
}

一般来说,我会尽量避免使用隐式解包选项(例如 resetToChosenPage: 方法中的 Int!。因为它们会导致这些“意外发现 nil”错误。

此外,由于您的 resetToChosenPage: 方法不会检查 pageViewController 是否已实例化,因此多次调用它会导致 PageViewController 的许多实例被实例化并彼此堆叠。这可能不是您想要的。

关于swift - PageViewController 不适用于 Swift 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376864/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com