如何管理打开并重新打开的UIViewControllers

时间:2018-06-16 10:27:01

标签: ios swift3 uiviewcontroller

我有2个UIViewControllers,它们互相打开,当问题多次发生时我的问题就开始了,所以当用户点击关闭按钮时,那些视图控制器就有很多实例,

我没有使用Segue并使用下面的代码

Execution failed for task ':processDebugGoogleServices'.

这是显示我的问题(LINK

的Gif文件

如何管理viewcotrollers并再次停止重新打开, 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

编写此代码

self.dismiss(animated: true, completion: nil)

点击“我已经拥有帐户”按钮

的事件

答案 1 :(得分:0)

我创建了一个简单的演示应用程序(没有故事板,只是代码),一切都按预期工作。将以下内容与您的代码进行比较:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        window = UIWindow()
        window?.rootViewController = ViewControllerA()
        window?.makeKeyAndVisible()
        return true
    }

}

class ViewControllerA: UIViewController {

    let createNewAccountButton: UIButton = {
        let button = UIButton(type: .system)
        button.translatesAutoresizingMaskIntoConstraints = false

        button.setTitle("Create new account", for: .normal)
        button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)

        return button
    }()

    @objc func buttonTapped(_ sender: UIButton) {
        let viewControllerB = ViewControllerB()
        present(viewControllerB, animated: true, completion: nil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .lightGray

        view.addSubview(createNewAccountButton)

        NSLayoutConstraint.activate([
            createNewAccountButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            createNewAccountButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -20)
        ])
    }
}

class ViewControllerB: UIViewController {

    let alreadyHaveAnAccountButton: UIButton = {
        let button = UIButton(type: .system)
        button.translatesAutoresizingMaskIntoConstraints = false

        button.setTitle("I already have an account", for: .normal)
        button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)

        return button
    }()

    @objc func buttonTapped(_ sender: UIButton) {
        dismiss(animated: true, completion: nil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .darkGray

        view.addSubview(alreadyHaveAnAccountButton)

        NSLayoutConstraint.activate([
            alreadyHaveAnAccountButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            alreadyHaveAnAccountButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -20)
        ])
    }
}