当UIViewController的参数更改时刷新视图



我有一个带有TableView的页面。当我们点击一个单元格时,它会加载一个新页面。新页面应该打印一个图像,该图像取决于我们点击的单元格。

以下是我在点击单元格时加载新页面的功能:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){

let vc = ProblemPresentation()
vc.modalPresentationStyle = .fullScreen
vc.selectedImage = "problem(indexPath.row)"
self.present(vc, animated: true, completion: nil)
return
}

问题是我在新页面上看不到图像。我想这是因为当我做vc.selectedImage = "..."时,vc页面已经加载,因此我在新页面上看不到图像。有没有办法让我的功能正常工作?也许在vc.selectedImage之后我可以做一些类似vc.refresh的事情,这样它就可以工作了。

这是我加载新页面的代码:

import UIKit
class ProblemPresentation: UIViewController, UITextFieldDelegate {

@IBOutlet weak var problemImage: UIImageView!
var selectedImage: String?
let sampleTextField =  UITextField(frame: CGRect(x: 100, y: 545, width: 230, height: 40))

let solution = ["600", "1", "0.5"]

override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
if let notNil = problemImage {
notNil.image = UIImage(named: selectedImage ?? "Ncorrect")
notNil.layer.masksToBounds = true
notNil.layer.borderWidth = 1.5
notNil.layer.borderColor = UIColor.black.cgColor
}

您可以使用didSet刷新:

var selectedImage: String? {
didSet {
problemImage.image = UIImage(named: selectedImage ?? "Ncorrect")
}
}

最新更新