我正在尝试更改UIImageView
中显示的图像,但是当调用函数“ loadMyImage
”(这是我要更改图像的功能)时,{{ 1}}变为零。
Picture
这是我调用ViewController
函数之前的代码。
loadMyImage
我在这条线上设置了一个断点
let playbackPoint = defaults.float(forKey: "pbpoint")
if eachTime > Double(playbackPoint) {
let name = imageList[timeList.index(of: eachTime)!]
ViewController().loadMyImage(name: name)
}
一切仍然存在 Picture
这是let name = imageList[timeList.index(of: eachTime)!]
loadMyImage
第一行开始运行。与UI相关的所有内容都变为零。我也尝试打印它,然后打印出“无”。
我尝试清理项目,但仍然无法正常工作。
答案 0 :(得分:1)
什么都不会出现 nil
,因为您不是在使用视图控制器,而是在使用视图控制器类的全新实例。
ViewController().loadMyImage(name: name)
您创建一个新实例,并在其上调用loadMyImage
。您正在创建的新实例与当前显示的视图控制器无关,不在导航堆栈上,它仅存在于if {}
的范围内,并将立即释放。
我假设此代码
let playbackPoint = defaults.float(forKey: "pbpoint")
if eachTime > Double(playbackPoint) {
let name = imageList[timeList.index(of: eachTime)!]
ViewController().loadMyImage(name: name)
}
驻留在您的视图控制器中?如果是这样,请执行以下操作:
let playbackPoint = defaults.float(forKey: "pbpoint")
if eachTime > Double(playbackPoint) {
let name = imageList[timeList.index(of: eachTime)!]
self.loadMyImage(name: name)
}
否则(在视图控制器中未调用),您需要将视图控制器实例传递给此函数。