Настройка просмотра страницы внутри контейнера. Выполнил все инструкции, которые смог найти (новичок).
Эти два массива находятся в контроллере основного представления, в котором есть имена изображений, которые я хочу заполнить на страницах.
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:
, что означает, что каким-то образом они получают нулевое значение из массивов.
Класс содержимого страницы выглядит следующим образом:
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
}
У меня есть другой проект с рабочим представлением страницы, подобным этому, и все работает отлично, и я скопировал почти все в точности, поэтому я не могу понять, почему значение из контроллера основного представления не передается должным образом в представление страницы в этом. Любая помощь приветствуется.
viewControllerAtIndex
главного контроллера представления. Нужно ли мне давать им значения в другом месте? 12.04.2016