我有两个通过 segue 链接的 View Controller 。一个 View Controller (ViewController2
) 中有多个 View 响应第一个 View Controller (ViewController1
) 中的 pageIndex
。所以我想要实现的是,如果 ViewController1
上的 pageIndex == 0
,onClick
,其中一个 View 应该可见。我已经使用 Labels
和 ImageViews
多次执行此操作,但是当涉及到使 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/