2017-01-30 4 views
0

Мой UIImageView всегда пуст. Когда изображение будет загружено, я распечатаю изображение и изображение. Это результат печати в первом разделе кода: UIImage: 0x170898010>, {4032, 3024} UIImageView: 0x14bb077e0; frame = (0 64; 375 554); Это результат печати во втором разделе кода: autoresize = RM + BM; userInteractionEnabled = НЕТ; layer = CALayer: 0x170a31240 Кажется, что оно хранит изображение, но оно не появляется.Swift UIImageView всегда пуст

Вот где образ, который сохранен 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) 
     } 

Вот код ViewController, который отображает UIImageView:

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

вы проверить, если изображение передается как не ноль? в вашем viewDidLoad? попробуйте сделать его инициализацию в viewWillAppear –

+0

Я получаю тот же результат и результат @EugeneZhenyaGordin – Steve

+0

, что насчет проверки, нет ли там нуль, вы проверили? –

ответ

0

От Apple Документы об изображении имущество:

Это свойство имеет право на изображение, указанное при инициализации. Если вы не использовали инициализацию (image :) или init (image: highlightImage :) для инициализации вашего изображения, начальное значение этого свойства равно нулю.

https://developer.apple.com/reference/uikit/uiimageview/1621069-image

+0

Если бы я загружал многократные снимки одновременно, как каждый может быть назначен на вывод на карте, где вы видите изображение на следующем экране, если щелкнуть аннотацию. Мне нужно иметь возможность назначить изображение позже. @wetsweater – Steve

0

ОП не использует перетекает, но меня попросили, если это будет решать вещи. Вот мое описание и код, который работает с помощью segue.

Baseline:

Мое приложение имеет два контроллера просмотра (выбирать и редактировать) с Segue между ними (ShowEditView). Это все Я определил в IB. Все остальное в коде.

Существует одна разница, которая, как представляется, не вызывает сомнений - я использую UIImagePickerController для получения изображения, в котором OP извлекает его из активов. Это не кажется проблемой, поскольку источник VC имеет изображение. Так что, взяв его отсюда (два VC с segue, определенными в IB, изображение в экземпляре UIImage), вот как я могу кодировать вещи на основе кода 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 
} 
Смежные вопросы