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
   }

displayImageViewoutlet 连接到我在 Storyboard 中的场景。当 User 点按不同的单元格时,我希望 displayImageView 中的图像发生变化。

在显示 tableViewPageViewControllerparentViewController 中,我在 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
  ..
}