我的UIImageView始终为空白。加载图像视图后,我将图像和图像视图打印出来。这是代码第一部分中print的输出: UIImage:0x170898010>,{4032,3024} UIImageView:0x14bb077e0; frame =(0 64; 375 554); 这是代码第二部分中print的输出: autoresize = RM + BM; userInteractionEnabled = NO; layer = CALayer:0x170a31240 它似乎存储了图像,但它没有出现。
这里是下载并转换正确保存到CloudKit的图像的地方:
if let asset = record["Picture"] as? CKAsset,
let data = NSData(contentsOf: asset.fileURL),
let image1 = UIImage(data: data as Data)
{
let eventPageViewController:EventPageViewController = self.storyboard?.instantiateViewController(withIdentifier: "EventPage") as! EventPageViewController
eventPageViewController.toPass = image1
print(image1)
}
以下是显示UIImageView的ViewController的代码:
class EventPageViewController: UIViewController {
@IBOutlet weak var eventPic: UIImageView!
var toPass: UIImage!
override func viewDidLoad() {
super.viewDidLoad()
eventPic.image = toPass
print(eventPic)
}
这里是eventPageViewController出现的地方:
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let eventPageViewController:EventPageViewController = storyboard?.instantiateViewController(withIdentifier: "EventPage") as! EventPageViewController
self.present(eventPageViewController, animated: true, completion: nil)
}
答案 0 :(得分:0)
来自Apple有关图片属性的文档:
此属性设置为您在初始化时指定的图像。如果您没有使用init(image :)或init(image:highlightedImage :)方法初始化图像视图,则此属性的初始值为nil。
https://developer.apple.com/reference/uikit/uiimageview/1621069-image
答案 1 :(得分:0)
OP并没有使用segues,但我被问到这是否可以解决问题。这是我使用segue工作的描述和代码。
基线:
我的应用程序有两个视图控制器(选择和编辑),它们之间有一个segue(ShowEditView)。这是我在IB中定义的全部。其他一切都在代码中。
有一个区别似乎没有问题 - 我使用UIImagePickerController来获取OP从资产中提取它的图像。 这似乎没有问题,因为源VC有图像。所以从这里拾取它(两个带有IB中定义的segue,UIImage实例中的图像的VC) #39;我可以根据OP的代码编写代码。
在源VC中:
func imageAttained() {
// here's where you move the image into image1
// this is the segue - make sure you've named it in IB
self.performSegue(withIdentifier: "ShowEventView", sender: self)
}
// this is an override in the source VC and passes the image
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowEventView" {
if let vc = segue.destination as? EventPageViewController {
vc.toPass = image1
}
}
}
在目标VC(EventPageViewController)中:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
eventPic.image = toPass
}