Когда я пытаюсь модально представить контроллер представления на 4-й вкладке моего TabBarController, который является TableViewController, встроенным в NavigationViewController, он представляется два раза подряд.
Фактический метод present(_:animated:completion:)
вызывается два раза подряд, когда это должно происходить только один раз.
Вот как я вызываю метод из UITableViewController
. Теперь, поскольку я получал предупреждение «Попытка представить vc, вид которого не находится в иерархии окон», я попытался обойти это, и я больше не получаю это предупреждение, но теперь у меня есть эта проблема.
((UIApplication.shared.keyWindow?.rootViewController as? MainTabBarViewController)?.selectedViewController as? NavigationPodesavanjaViewController)?.visibleViewController?.present(Egg, animated: true, completion: nil)
Это все содержимое контроллера представления, которое будет представлено. На данный момент это просто фиктивный контент с кнопкой возврата:
import UIKit
class EasterEggViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.backgroundColor = ConstantsClass.ljubicastaBoja
let imageView = UIImageView(image: UIImage(named: "operator-ikonica"))
view.addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
imageView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
imageView.frame.size = CGSize(width: 250, height: 250)
let backButton = UIButton()
view.addSubview(backButton)
backButton.setTitle("Nazad", for: .normal)
backButton.titleLabel?.textColor = .white
backButton.frame = CGRect(x: 50, y: 50, width: 100, height: 20)
backButton.titleLabel?.adjustsFontSizeToFitWidth = true
backButton.addTarget(self, action: #selector(dismissAction), for: .touchUpInside)
}
@objc func dismissAction() {
dismiss(animated: true, completion: nil)
}
}
Представленный метод вызывается в обработчике для длительного нажатия клавиши.
// ПРИМЕЧАНИЕ. Когда я изменил долгое нажатие на нажатие, он работал как надо, когда я снова его изменил, он снова был представлен два раза.
Это часть кода из viewDidLoad:
let longPressEgg = UILongPressGestureRecognizer()
longPressEgg.addTarget(self, action: #selector(easterEggScreenPresent))
easterEgg.addGestureRecognizer(longPressEgg)
А это обработчик:
@objc func easterEggScreenPresent(){
let Egg = EasterEggViewController()
((UIApplication.shared.keyWindow?.rootViewController as? MainTabBarViewController)?.selectedViewController as? NavigationPodesavanjaViewController)?.visibleViewController?.present(Egg, animated: true, completion: nil)
}