Как передать 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, поэтому нет необходимости вызывать их дважды. Это может быть проблемой.

Другие вопросы по тегам