调用函数将UIViewController推入封闭内部,就好像它在外面一样

时间:2017-07-26 07:03:03

标签: ios swift closures pushviewcontroller

我在另外两个闭包(handleMentionTap(第二个闭包)和entireDescView.customize(第一个闭包)中有一个闭包(description)。现在我想调用位于同一个类中的函数pushProfileController(of: String)(为了推送另一个视图控制器(newController)。函数需要在闭包内调用,因为它在它之外调用它们导致内存泄漏的原因我目前还不知道(我使用的是一个名为ActiveLabel的库,我自己也没有写过。)但是,newController没有被推送(即使我使用{ {1}}正如关于类似问题的stackoverflow的一些答案中所建议的那样。然而,DispatchQueue.main.async似乎已创建及其数据集(我使用newController打印数据)。如何推送控制器好像它在关闭之外(例如var passedData: String? { didSet { print(passedData) } }?我真的很感谢你的帮助!

swift(同一课程中的每个人):

self.pushProfileController(of: username)

1 个答案:

答案 0 :(得分:2)

您检查过navigationController?是否存在?

在尝试推送viewController之前尝试添加以下内容:

func pushProfileController(of: String) {
    if self.pushingViewController == false {
        self.pushingViewController = true
        DispatchQueue.main.async {
            guard let navController = self.navigationController else { return print("navigationController was nil") }
            let newController = NewController()
            newController.passedData = of //passedData is a string
            navController.pushViewController(newController, animated: true)
        }

        self.pushingViewController = false
    }
}