【发布时间】:2016-04-11 22:33:28
【问题描述】:
在容器内设置页面视图。遵循我能找到的所有说明(初学者)。
这两个数组位于主视图控制器中,其中包含我要填充页面的图像名称。
self.shirtImage = NSArray(objects: "shirt1", "shirt2")
self.pantsImage = NSArray(objects: "pants1", "pants2")
每当我运行程序时,这两行代码:
self.todayShirt.image = UIImage(named: self.shirtName)
self.todayPants.image = UIImage(named: self.pantsName)
返回错误fatal error: unexpectedly found nil while unwrapping an Optional value 或CUICatalog: Invalid asset name supplied:,这意味着它们以某种方式从数组中接收到 nil 值。
页面内容类如下所示:
class TodayPicksViewController: UIViewController {
@IBOutlet weak var todayShirt: UIImageView!
@IBOutlet weak var todayPants: UIImageView!
var pageIndex: Int!
var shirtName: String!
var pantsName: String!
override func viewDidLoad() {
super.viewDidLoad()
self.todayShirt.image = UIImage(named: self.shirtName)
self.todayPants.image = UIImage(named: self.pantsName)
主视图控制器是这样设置的:
class ViewController: UIViewController, UIPageViewControllerDataSource {
var pageViewController: UIPageViewController!
var shirtImage: NSArray!
var pantsImage: NSArray!
override func viewDidLoad() {
super.viewDidLoad()
self.shirtImage = NSArray(objects: "shirt1", "shirt2")
self.pantsImage = NSArray(objects: "pants1", "pants2")
self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController
self.pageViewController.dataSource = self
let startVC = self.viewControllerAtIndex(0) as TodayPicksViewController
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.height - 60)
self.addChildViewController(self.pageViewController)
self.view.addSubview(self.pageViewController.view)
self.pageViewController.didMoveToParentViewController(self)
}
func viewControllerAtIndex(index: Int) -> TodayPicksViewController {
if ((self.shirtImage.count == 0) || index >= self.shirtImage.count){
return TodayPicksViewController()
}
let vc: TodayPicksViewController = self.storyboard?.instantiateViewControllerWithIdentifier("TodayPicksViewController") as! TodayPicksViewController
vc.shirtName = self.shirtImage[index] as! String
vc.pantsName = self.pantsImage[index] as! String
vc.pageIndex = index
return vc
}
我有另一个项目,它有一个与此类似的工作页面视图,并且一切正常,我已经完全复制了几乎所有内容,所以我无法弄清楚为什么主视图控制器的值没有正确传递到页面视图这个。任何帮助表示赞赏。
【问题讨论】:
-
@Paulw11 我不确定我是否跟随。我应该怎么做?
-
@andrewxt 我认为您在将图像设置为 UIImageView 时遇到了问题(即设置图像的语法错误),或者您的图像命名存在问题(您可能没有正确命名所有图像)。我在下面回答了这个问题,只要按照我说的去做!它应该有帮助,如果没有,请告诉我。
-
@Paulw11 你的意思是在主视图控制器中还是在页面内容视图控制器中?
-
我认为您可能正在以低于标准的方式制作该数组。这是我的下一个想法:)。在下面查看我修改后的解决方案。基本上,您将删除所有 NSArray 内容并在 viewdidload() 之外创建两个新的 NSMutableArrays。
标签: ios swift uiimage swift2 uipageviewcontroller