Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift预加载视图控制器在其前面';有什么节目吗?_Ios_Objective C_Swift_Uiscrollview - Fatal编程技术网

Ios Swift预加载视图控制器在其前面';有什么节目吗?

Ios Swift预加载视图控制器在其前面';有什么节目吗?,ios,objective-c,swift,uiscrollview,Ios,Objective C,Swift,Uiscrollview,我有一个viewController,它将一组图片加载到滚动视图中。当您第一次输入时,加载会花费一些时间,因此会减慢UI的速度。我正在努力找到解决问题的最佳方法。也许我应该一次只加载一定数量的图像,但我想我可以在上一个视图控制器中显示之前加载它 以下是myviewController中需要很长时间才能加载的函数: func loadImages() { var documentPath = NSSearchPathForDirectoriesInDomains(.Document

我有一个
viewController
,它将一组图片加载到
滚动视图中。当您第一次输入时,加载会花费一些时间,因此会减慢UI的速度。我正在努力找到解决问题的最佳方法。也许我应该一次只加载一定数量的图像,但我想我可以在上一个视图控制器中显示之前加载它

以下是my
viewController
中需要很长时间才能加载的函数:

    func loadImages() {
    var documentPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
    var files: NSArray = NSFileManager.defaultManager().contentsOfDirectoryAtPath(documentPath, error: nil)!

    var currentX: CGFloat = 0.0

    for image in files {
        var im : NSString = image as NSString
        var imagePath = documentPath.stringByAppendingPathComponent(im)
        var image = UIImage(contentsOfFile: imagePath)
        var imageView = UIImageView(image: image)

        var rect = imageView.frame
        rect.origin.x = currentX
        imageView.frame = rect
        //            imageView.contentMode = .ScaleAspectFill
        imageView.frame.size.width = UIScreen.mainScreen().bounds.width
        imageView.frame.size.height = UIScreen.mainScreen().bounds.height

        currentX += imageView.frame.size.width

        self.scrollView.addSubview(imageView)
    }

//        currentX += UIScreen.mainScreen().bounds.width

    self.scrollView.contentSize = CGSizeMake(currentX, self.scrollView.frame.size.height)
    self.scrollView.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleLeftMargin | UIViewAutoresizing.FlexibleRightMargin
}
在上一个视图控制器中,我尝试执行以下操作:

var imageView = ImagesViewController().view
但这似乎不行。我得到:
致命错误:在展开可选值时意外发现nil

有什么办法吗?或者你会推荐另一种解决方案


谢谢。

在init()内调用loadImages()或任何您正在使用的自定义初始值设定项。

我认为您的问题不在UI中。在哪里调用loadImage方法?(最好不要在主队列中加载图像)为了更快地处理图像,您可以解压缩它们

UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), NO, 0);
[image drawInRect:CGRectMake(0, 0, 1, 1)];
UIGraphicsEndImageContext();

你可以使用带有单元格的集合视图来显示图像。我在viewDidLoad中调用它。。我是否应该在后台任务中执行此操作?这是更改UI的正确位置。如果你有很多有理由的图片。为什么不使用UICollectionView?