Swift: 正在刷新 UIImageView 图片
Swift: Refreshing UIImageView Image
我的 window 一半是 UITableView
,另一半是 PageViewController
。
在我的 PageViewController 中,我有两个属性:
@IBOutlet weak var displayImageView: UIImageView!
var displayImage : UIImage?
PageViewController viewDidLoad
我分配:
override func viewDidLoad() {
super.viewDidLoad()
self.displayImageView.image = self.displayImage
}
displayImageView
是 outlet
连接到我在 Storyboard
中的场景。当 User
点按不同的单元格时,我希望 displayImageView
中的图像发生变化。
在显示 tableView
和 PageViewController
的 parentViewController
中,我在 didSelectRowAtIndexPath
中调用了以下方法
func getDisplayImageForSelectedRow() {
var row = self.tableView.indexPathForSelectedRow()?.row
//DisplayImageVC is a contentViewController that is loaded by pageViewController
var displayImageVC = self._pageContent[1] as DisplayImageVC
displayImageVC.displayImage = self._displayImage[row!] as UIImage
println(displayImageVC.displayImage)
if (self.isPageViewVisible){
displayImageVC.displayImageView.reloadInputViews()
displayImageVC.displayImageView.setNeedsDisplay()
}
}
这里是来自 println()
的日志:
You selected cell #0
Optional(<UIImage: 0x7c21c2e0>)
You selected cell #1
Optional(<UIImage: 0x7c21c5a0>)
You selected cell #2
Optional(<UIImage: 0x7c21cd00>)
You selected cell #3
Optional(<UIImage: 0x7c21cff0>)
You selected cell #4
Optional(<UIImage: 0x7c21d2d0>)
根据日志,我推测正在分配新图像;但是,UIImageView
插座继续显示与第一次加载 pageViewController 时加载的相同图像。
您可能已经在代码中注意到,我尝试了以下几行代码来刷新 UIImageView,但无济于事:
displayImageVC.displayImageView.reloadInputViews()
displayImageVC.displayImageView.setNeedsDisplay()
如何让 UIImageView
显示已加载的新图像?
在 getDisplayImageForSelectedRow
中,您只更新 UIImage,您还应该将图像分配给视图。:
func getDisplayImageForSelectedRow() {
..
displayImageVC.displayImage = self._displayImage[row!] as UIImage
displayImageVC.displayImageView.image = displayImageVC.displayImage <--THIS
..
}
我的 window 一半是 UITableView
,另一半是 PageViewController
。
在我的 PageViewController 中,我有两个属性:
@IBOutlet weak var displayImageView: UIImageView!
var displayImage : UIImage?
PageViewController viewDidLoad
我分配:
override func viewDidLoad() {
super.viewDidLoad()
self.displayImageView.image = self.displayImage
}
displayImageView
是 outlet
连接到我在 Storyboard
中的场景。当 User
点按不同的单元格时,我希望 displayImageView
中的图像发生变化。
在显示 tableView
和 PageViewController
的 parentViewController
中,我在 didSelectRowAtIndexPath
func getDisplayImageForSelectedRow() {
var row = self.tableView.indexPathForSelectedRow()?.row
//DisplayImageVC is a contentViewController that is loaded by pageViewController
var displayImageVC = self._pageContent[1] as DisplayImageVC
displayImageVC.displayImage = self._displayImage[row!] as UIImage
println(displayImageVC.displayImage)
if (self.isPageViewVisible){
displayImageVC.displayImageView.reloadInputViews()
displayImageVC.displayImageView.setNeedsDisplay()
}
}
这里是来自 println()
的日志:
You selected cell #0
Optional(<UIImage: 0x7c21c2e0>)
You selected cell #1
Optional(<UIImage: 0x7c21c5a0>)
You selected cell #2
Optional(<UIImage: 0x7c21cd00>)
You selected cell #3
Optional(<UIImage: 0x7c21cff0>)
You selected cell #4
Optional(<UIImage: 0x7c21d2d0>)
根据日志,我推测正在分配新图像;但是,UIImageView
插座继续显示与第一次加载 pageViewController 时加载的相同图像。
您可能已经在代码中注意到,我尝试了以下几行代码来刷新 UIImageView,但无济于事:
displayImageVC.displayImageView.reloadInputViews()
displayImageVC.displayImageView.setNeedsDisplay()
如何让 UIImageView
显示已加载的新图像?
在 getDisplayImageForSelectedRow
中,您只更新 UIImage,您还应该将图像分配给视图。:
func getDisplayImageForSelectedRow() {
..
displayImageVC.displayImage = self._displayImage[row!] as UIImage
displayImageVC.displayImageView.image = displayImageVC.displayImage <--THIS
..
}