PageViewController iOS Swift出现问题

PageViewController iOS Swift出现问题,ios,swift,uipageviewcontroller,Ios,Swift,Uipageviewcontroller,iOS中带Swift的UIpageviewController有问题,代码如下: class RootPageController: UIPageViewController , UIPageViewControllerDataSource , UIPageViewControllerDelegate{ var showPhotoController: PageController! // it's the first page var array : NSMutable

iOS中带Swift的UIpageviewController有问题,代码如下:

class RootPageController: UIPageViewController , UIPageViewControllerDataSource , UIPageViewControllerDelegate{


     var showPhotoController: PageController! // it's the first page
     var array : NSMutableArray?
     var id : String?
     var photosActivities : NSArray? // photos that I have to show in the pages
     var index : Int?

    override func viewDidLoad() {


        self.delegate = self
        self.dataSource = self
        self.showPhotoController = self.storyboard?.instantiateViewControllerWithIdentifier("first") as PageController

        self.array = NSMutableArray()
        self.array?.addObject(self.showPhotoController)
        self.index = 0

        self.setViewControllers(self.array, direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)

        var model = ModelDataServer(username: "", password: "")

        self.photosActivities = model.getPhotosActivityWithID(self.id!)

        self.showPhotoController.photo.image = self.photosActivities?.objectAtIndex(self.index!) as? UIImage


        self.index = self.index! + 1

    }
    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
    {

        if(self.index > 0){

            self.index = self.index! - 1

            var previousPage =  self.storyboard?.instantiateViewControllerWithIdentifier("first") as PageController


            var image: UIImage = self.photosActivities?.objectAtIndex(self.index!) as UIImage 
            previousPage.photo.image =  image
            return previousPage
       }


        return nil
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?
    {



        if(self.index! < self.photosActivities!.count ){

            var newPage : PageController = self.storyboard?.instantiateViewControllerWithIdentifier("first") as PageController

        var image: UIImage = self.photosActivities?.objectAtIndex(self.index!) as UIImage 
        newPage.photo.image =  image
        self.index = self.index! + 1
        return newPage

        }
        return nil
    }

}
我有一个PageViewController,它由不同的页面组成。此页面是一个视图控制器,它具有用于显示图像的UIIMageView。此viewcontroller的类型为PageController

我的问题是:

当我更改页面并转到下一页时,我会看到下一页控制器,但在UIIMageView中看不到图像,即使我在
viewControllerAfterViewController
中设置了新图像


非常感谢您的时间

我相信这是因为视图控制器的视图是惰性实例化的,即使视图控制器本身是从故事板实例化的。结果是,
previousPage.photo
newPage.photo
在您尝试设置其图像时均为零。为了解决这个问题,我将向PageController类添加一个单独的UIImage存储属性

var photoToShow : UIImage = UIImage()
然后,在
viewControllerBeforeViewController
viewControllerAfterViewController
方法中,根据照片数组中的相关项设置此新属性:

newPage.photoToShow = self.photosActivities?.objectAtIndex(self.index!) as UIImage

然后在
PageController
类的
viewDidLoad
中(此时视图和子视图,包括
photo
UIImageView,将被实例化),将
photo.image
设置为新存储的属性:

photo.image = photoToShow

为了更好地理解,您在下一页的
UIImageView
中看到了什么?总是一样的形象?还是什么都没有?我什么也没看见。我只看到视图背景(它是黄色的)我只在第一页看到图像(代码中的showPhotoController),从第二页开始我只看到视图背景确保从数组中检索的图像不是零。是的,它不是零,因为我得到了它(使用println())“可选()
previousPage.photoToShow = self.photosActivities?.objectAtIndex(self.index!) as UIImage
photo.image = photoToShow