我加载了一个视图控制器,该视图控制器从数据库中获取了不同的视频并获取了它们的下载URL,然后使用prepare(segue:...)
将每个URL传递给它自己的String中的下一个viewcontroller,在该类中,我以编程方式制作了带有我的自定义数据的滚动视图,但是出现错误Cannot use instance member 'itemOne' within property initializer; property initializers run before 'self' is available
。我理解此错误的含义,并且我尝试了惰性变量,但是考虑到以前的视图控制器需要该变量将url数据发送到该变量,我认为这样做不起作用。因此,当需要将数据发送到该变量时,如何处理呢,这是我的代码:
class HomeViewController: UIViewController {
// Variables use with the previous view controller to send data between them
var itemOne: String?
var itemTwo: String?
var itemThree: String?
var itemFour: String?
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(collectionView)
collectionView.backgroundColor = .white
collectionView.topAnchor.constraint(equalTo: view.topAnchor, constant: 150).isActive = true
collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16).isActive = true
collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16).isActive = true
collectionView.heightAnchor.constraint(equalTo: collectionView.widthAnchor, multiplier: 0.5).isActive = true
collectionView.delegate = self
collectionView.dataSource = self
}
fileprivate let data = [
CustomData(title: "Test", image: #imageLiteral(resourceName: "ss-1"), url: itemOne!), // ERROR
CustomData(title: "Test2", image: #imageLiteral(resourceName: "done-button"), url: itemTwo!), // ERROR
CustomData(title: "Test2", image: #imageLiteral(resourceName: "notificationIcon"), url: itemThree!) // ERROR
]
/....
var data: [CustomData] {
return [
CustomData(title: "Test", image: #imageLiteral(resourceName: "ss-1"), url: itemOne!),
CustomData(title: "Test2", image: #imageLiteral(resourceName: "done-button"), url: itemTwo!),
CustomData(title: "Test2", image: #imageLiteral(resourceName: "notificationIcon"), url: itemThree!)
]
}