У меня есть два контроллера представления, которые связаны через segue. Один контроллер представления (ViewController2
) имеет несколько представлений, которые реагируют на pageIndex
в первом контроллере представления (ViewController1
). Итак, чего я пытаюсь добиться, так это того, что onClick
если pageIndex == 0
на ViewController1
, одно из представлений должно стать видимым. Я делал это несколько раз с Labels
и ImageViews
, но когда дело доходит до того, чтобы сделать вид видимым, я не могу этого добиться. Поэтому мне нужна помощь, чтобы достичь этого.
Вьюконтроллер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
}
}
Вьюконтроллер2:
@IBOutlet weak var viewabc: UIView!
@IBOutlet weak var viewdef: UIView!
@IBOutlet weak var viewghi: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
В раскадровке все 3 вида скрыты
@EkremDuvarbasi Раньше я использовал UITabBarController, но для этого он не соответствует дизайну, которого я пытаюсь достичь. Полный код для этого создает анимацию переворачивания карты при нажатии, чтобы отобразить представление в ViewController2. Вся анимация работает хорошо, но у меня возникают проблемы с отображением представлений при нажатии карты.
Передайте значение 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
}
}
}
Почему вы не используете UITabbarController? Это хорошее решение для вашей проблемы.