ios - 使用 Segue,如何在不同的 View Controller 中控制 View 的可见性?

标签 ios swift uistoryboardsegue

我有两个通过 segue 链接的 View Controller 。一个 View Controller (ViewController2) 中有多个 View 响应第一个 View Controller (ViewController1) 中的 pageIndex。所以我想要实现的是,如果 ViewController1 上的 pageIndex == 0onClick,其中一个 View 应该可见。我已经使用 LabelsImageViews 多次执行此操作,但是当涉及到使 View 可见时,我似乎无法实现它。所以我需要帮助来实现它。

View Controller 1:

  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
  }
}

View Controller 2:

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

  override func viewDidLoad() {
    super.viewDidLoad()


      }

在 Storyboard 中,所有 3 个 View 都设置为隐藏

最佳答案

将 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
        }
    }
}

并根据pageIndex值更新ViewController2 View

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
        }
    }
}

关于ios - 使用 Segue,如何在不同的 View Controller 中控制 View 的可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56328379/

相关文章:

uitableview - 在 Swift 的嵌入式 tableView 中准备 segue

ios - 通过 Storyboard 中的模态序列检索和传递注释数据

ios - Swift 3 UIScrollview 不要求缩放

iOS CoreMotion - 计算高度差

ios - UIView的高度约束动画

ios - 实时更新自定义表格部分标题 View 内容

ios - 如何安排一周中特定两天的本地通知?

c# - 检查验证并执行segue 与应该执行segue

ios - Swift UITableViewCell 子类,IBOutlet UILabel 错误,如果用作普通 var 则没有错误

ios - 准备 segue 时无法将数据传递给另一个 View Controller