Отправить массив изображений на новый контроллер представления - PullRequest
0 голосов
/ 17 сентября 2018

В настоящее время у меня есть Tableview, который, когда пользователь щелкает, отправляет их в новый viewcontroller, который отображает одно изображение. Тем не менее, поскольку мне нужно, чтобы они могли смахивать для отображения второго изображения, связанного с первым (в зависимости от выбранной строки), я пытаюсь создать массив для отправки. Я (думаю?) Успешно создал массив, но у меня возникают проблемы с кодом, так как он не будет «правильно отправлять». Мне интересно, где я ошибаюсь, и какие изменения мне нужно внести, чтобы иметь возможность отправить массив, чтобы пользователь мог провести пальцем и увидеть второе изображение. Если вам нужно больше кода, пожалуйста, дайте мне знать, и я отредактирую его там. Спасибо!

let firstchoice: [UIImage] = [
    UIImage(named: "Appa1")!,
    UIImage(named: "Appa2")!
    ]


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    ///Right way here
    ///You can easily manage using this
    let Vc = self.storyboard?.instantiateViewController(withIdentifier: "imageViewController") as! imageViewController



    ///Here you have written four Animal names in Array
    ///So There is going to four case 0,1,2,3 and a default case
    switch indexPath.row
    {
    case 0:
        Vc.passedImage = UIImage.init(named: firstchoice)
        self.navigationController?.pushViewController(Vc, animated: true)
        break;
    case 1:
        Vc.passedImage = UIImage.init(named: "AppA2")!
        self.navigationController?.pushViewController(Vc, animated: true)
        break;
    case 2:
        Vc.passedImage = UIImage.init(named: "AppB")!
        self.navigationController?.pushViewController(Vc, animated: true)
        break;
    case 3:
        Vc.passedImage = UIImage.init(named: "AppC")!
        self.navigationController?.pushViewController(Vc, animated: true)
        break;
    case 4:
        Vc.passedImage = UIImage.init(named: "AppD")!
        self.navigationController?.pushViewController(Vc, animated: true)
        break;
    case 5:
        Vc.passedImage = UIImage.init(named: "AppE")!
        self.navigationController?.pushViewController(Vc, animated: true)
        break;

Контроллер просмотра изображений:

import UIKit
import GoogleMobileAds


class imageViewController: UIViewController,GADBannerViewDelegate, UIGestureRecognizerDelegate, UIScrollViewDelegate {

    var bannerView: GADBannerView!

    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var myImageView: UIImageView!


    //var passedImage : UIImage! = nil
    var passedImage : [UIImage]


    override func viewDidLoad(){
        super.viewDidLoad()
        self.myImageView.image = passedImage
        self.navigationController?.navigationBar.isHidden = false

        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 5.0

1 Ответ

0 голосов
/ 17 сентября 2018

Ваша passedImage представляется переменной UIImage в imageViewController.Что вам нужно сделать, это изменить это на [UIImage].Это позволит вам сохранить массив изображений.

После чего вы switch будете выглядеть следующим образом.

switch indexPath.row {
    case 0:
        Vc.passedImage = firstchoice
        self.navigationController?.pushViewController(Vc, animated: true)
        break;
    case 1:
        Vc.passedImage = [UIImage.init(named: "AppA2")!]
        self.navigationController?.pushViewController(Vc, animated: true)
        break;
    case 2:
    // Rest of your cases follow suit.
}

Вам потребуется получить доступ к изображению из массива изображений, используя их соответствующиеindex.

Sidenote: используйте lowerCamelCase для имен переменных, как они говорят в Swift именах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...