Используя Segue, Как мне управлять видимостью представления в другом контроллере представления? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть два контроллера представления, которые связаны через segue.Один контроллер представления (ViewController2) имеет несколько представлений в нем, что соответствует pageIndex в первом контроллере представления (ViewController1).Поэтому я пытаюсь добиться того, чтобы onClick, если pageIndex == 0 на ViewController1, одно из представлений стало видимым.Я делал это несколько раз с Labels и ImageViews, но когда дело доходит до того, чтобы сделать видимость видимой, я не могу этого достичь.Поэтому мне нужна помощь для достижения этого.

ViewController1:

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segueIdentifier(for: segue) == .reveal,
      let secondViewController = segue.destination as? ViewController2 {

      if pageIndex == 0 {
        //secondViewController.viewabc.isHidden = false

      }else if pageIndex == 1{
        //secondViewController.viewdef.isHidden = false

      }else{
        //secondViewController.viewghi.isHidden = false

      }


      secondViewController.transitioningDelegate = self

      }

  }

  @IBAction func handleTap() {
    performSegue(withIdentifier: .reveal, sender: self)


  }
}

extension ViewController1: SegueHandlerType {
  enum SegueIdentifier: String {
    case reveal
  }
}

ViewController2:

  @IBOutlet weak var viewabc: UIView!
  @IBOutlet weak var viewdef: UIView!
  @IBOutlet weak var viewghi: UIView!

  override func viewDidLoad() {
    super.viewDidLoad()


      }

В раскадровке все 3 представления скрыты

1 Ответ

1 голос
/ 27 мая 2019

Передайте значение pageIndex из ViewController1 в ViewController2.

class ViewController1: UIViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segueIdentifier(for: segue) == .reveal,
            let secondViewController = segue.destination as? ViewController2 {
            secondViewController.transitioningDelegate = self
            secondViewController.pageIndex = pageIndex
        }
    }
}

И обновите представления ViewController2 на основе значения pageIndex

class ViewController2: UIViewController {
    var pageIndex: Int?
    @IBOutlet weak var viewabc: UIView!
    @IBOutlet weak var viewdef: UIView!
    @IBOutlet weak var viewghi: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        if pageIndex == 0 {
            self.viewabc.isHidden = false
        }else if pageIndex == 1{
            self.viewdef.isHidden = false
        }else{
            self.viewghi.isHidden = false
        }
    }
}
...