尝试使用翠鸟下载图像以在集合视图中使用时出现索引超出范围错误

时间:2019-07-17 10:35:29

标签: ios swift uicollectionview kingfisher

我已经创建了一个集合视图控制器,用作我的应用程序的导航系统,并且集合视图是在TabBar.swift中创建的,另外还有两个继承自类TabBar的视图控制器。因此TabBar基本上是基本视图控制器。

struct OpenViewController {
    var viewController: UIViewController
    var cellImage: UIImage
}

class TabBar: UIViewController {
    var viewControllerList = [OpenViewController]()
}

extension TabBar: UICollectionViewDelegateFlowLayout, UICollectionViewDataSource {
    // Selecting a cell and navigating to another view controller
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        // To present the view controllers
        let openViewController = self.viewControllerList[indexPath.row]
        self.present(openViewController.viewController, animated: false)
    }
}

当用户点击集合视图中的单元格时,上述代码段将用户带到指定的视图控制器。下面的代码片段显示了如何在其他视图控制器中指定视图控制器:

class SecondScreen: TabBar {
    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://SomeURL")

        let downloader = ImageDownloader.default
        downloader.downloadImage(with: url!) { result in

            switch result {

            case .success(let value):
                print(value.image)

                self.viewControllerList = [
                    OpenViewController(viewController: FirstScreen(), cellImage: #imageLiteral(resourceName: "error")),
                    OpenViewController(viewController: ThirdScreen(), cellImage: value.image)
                ]

            case .failure(let error):
                print(error)
            }
        }
    }
}

运行此命令时,出现索引超出范围错误,应用崩溃。

0 个答案:

没有答案