Как передать pfimageview от одного контроллера к другому в раскадровке с помощью swift и parse.com
Я надеялся, что смогу дать совет. Я делаю приложение викторины, которое содержит изображения. Викторина имеет 4 поля ответа с одним изображением. Я могу загрузить изображения в викторину через parse.com
Однако теперь я хочу иметь возможность щелкнуть изображение, которое затем перейдет на отдельный контроллер просмотра, чтобы вы могли увеличить изображение в полноэкранном режиме. Я был в состоянии позвонить pffile
и, однако, мое приложение падает, когда я пытаюсь getdatainbackgroundwithblock
во втором виде контроллер. Как вы думаете, я должен передать изображение?
РЕДАКТИРОВАТЬ
Да, прости. Таким образом, сбой, который я получал, был ошибкой при code=1 address=0x48, которая произошла в строке +55 getdatainbackgroundwithblock.
Я вставил фрагмент кода, который я использовал ниже.
Я использовал это, чтобы вызвать изображение в первом представлении и превратить его в изображение в моем PFImageView.
`для объекта: PFObject в objectsArray as! [PFObject] {пусть image = object["Image"] как! PFFile let transimage = изображение
image.getDataInBackgroundWithBlock {
(imageData:NSData?, error:NSError?) -> Void in
if error == nil {
let finalimage = UIImage(data: imageData!)
// self.imageView.append(finalimage!)
self.imageView.image = final image`
Затем я передал его второму контроллеру вида, как это.
`переопределить func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if(segue.identifier == "ZoomImage"){
// Get the new view controller using [segue destinationViewController].
var detailScene = segue.destinationViewController as! ZoomImageViewController
detailScene.currentObject = transimage as! PFFile
NSLog("checkone")
}
}`
В моем втором контроллере представления я попытался превратить это в изображение как это.
`if let object = currentObject {NSLog (" (currentObject) ")
var initialThumbnail = UIImage(named: "question")
NSLog("check1")
imageView.image = initialThumbnail
NSLog("check2")
NSLog("check3")
object.getDataInBackgroundWithBlock {
(imageData:NSData?, error:NSError?) -> Void in
if error == nil {
NSLog("check4")
let finalimage = UIImage(data: imageData!)
// self.imageView.append(finalimage!)
self.imageView.image = finalimage
NSLog("check5")`
Я получил бы NSLog 3, и тогда код сломался бы. NSLog для currentObject также вернул PFFile, поэтому я поверил, что это правда. Куда я иду не так? И есть ли лучший способ пройти это?
2 ответа
Вы были правы, мне не нужны getdata. Я избавился от этого и вместо того, чтобы передать свой pffile, я изолировал pfobject, содержащий изображение и текст. Затем я вызвал объект как файл и поместил его в представление uiimageview. Я буду публиковать код, который я использовал, если кто-то захочет.
Почему вы вызываете getDataInBackgroundWithBlock в обоих контроллерах представления? Вы уже получаете данные в своем экземпляре PFFile, поэтому нет необходимости вызывать их дважды. Это может быть проблемой.