Я пытаюсь поместить представление страницы в основной вид с помощью контейнера. Я следил за видео, чтобы просмотреть тестовую страницу, так как я новичок в Swift. Я заставил его работать в тесте, а затем скопировал большую часть кода и изменил соответствующие переменные. Когда я запускаю приложение, контейнер отображается без содержимого.
Это мой контроллер просмотра содержимого страницы.
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)
// Do any additional setup after loading the view.
}
Это мой основной контроллер представления.
class ViewController: UIViewController, UIPageViewControllerDataSource {
var pageViewController: UIPageViewController!
var shirtImages: NSArray!
var pantsImages: NSArray!
override func viewDidLoad() {
super.viewDidLoad()
self.shirtImages = NSArray(objects: "shirt1", "shirt2")
self.pantsImages = 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)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func viewControllerAtIndex(index: Int) -> TodayPicksViewController {
if ((self.shirtImages.count == 0) || index >= self.shirtImages.count){
return TodayPicksViewController()
}
let vc: TodayPicksViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ContentViewController") as! TodayPicksViewController
vc.pantsName = self.pantsImages[index] as! String
vc.shirtName = self.shirtImages[index] as! String
vc.pageIndex = index
return vc
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
let vc = viewController as! TodayPicksViewController
var index = vc.pageIndex as Int
if ((index == 0 ) || index == NSNotFound){
return nil
}
index -= 1
return self.viewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
let vc = viewController as! TodayPicksViewController
var index = vc.pageIndex as Int
if (index == NSNotFound){
return nil
}
index += 1
if (index == self.shirtImages.count){
return nil
}
return self.viewControllerAtIndex(index)
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return self.shirtImages.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return 0
}
Я поиграл с изменениями, надеюсь, что-то заработает, и самое близкое, что мне удалось получить, вернуло сообщение об ошибке CUICatalog: Invalid asset name supplied:
Я просмотрел сообщение об ошибке, и оно предположило, что я могу передать нулевое значение представлению изображения, но, насколько я могу судить, они настроены точно так же, как и тестовый проект, который я сделал. Возможно, это как-то связано с отношениями между родителями и детьми, но я не уверен. Любое руководство очень ценится.