【问题标题】:Call a segue in another class that the UI with swift在另一个类中使用 swift 调用 UI
【发布时间】:2014-10-28 13:26:16
【问题描述】:

我正在使用 swift 创建一个 ios 应用程序。我有一个 UIViewController 和一个继承自 NSObject 的“UserManager”类。基本上,当用户打开应用程序时,会执行 UIViewController 中的代码。 UIViewController 调用 UserManager 中的一个函数。当这个函数完成后,我希望执行一个 segue(在我的代码中称为“connectSegue”的一个 segue)。我是初学者...

我做了什么(但没用!):

这是我的视图控制器:

import UIKit

var profileUser = UserManager()

class ViewController : UIViewController{

override func viewDidLoad() {login()}

func login()->Void {profileUser.createUser()}

func handleSegue()->Void {self.performSegueWithIdentifier("connectSegue",sender: self)}

}

这是我的 UserManager 类:

import Foundation

class UserManager: NSObject {

//Some properties

func createUser()->Void {

//Some code

var segueHandler = ViewController()
segueHandler.handleSegue()
}
}

我该怎么做? 谢谢

【问题讨论】:

    标签: ios swift uiviewcontroller segue


    【解决方案1】:

    问题是您的 UserManager 正在创建 ViewController 的一个新实例,它不是调用 UserManager 的那个。

    处理这个问题的更好方法是在调用 login 之后在 ViewController 中调用 performSegueWithIdentifier。

    一般来说,最好不要将 UI 导航放在非 UI 类中。如果 UserManager 只处理用户功能,而不是 UI 职责,它会更有用。如果 UserManager 正在异步执行其工作,那么您应该考虑在工作完成时使用通知与您的 ViewController 进行通信,以便它可以执行 segue。

    【讨论】:

    • 我明白了,谢谢你的回答。这是我的第一次尝试,在 login() 之后调用 performSegueWithIdentifier,但它不起作用,因为 login() 没有时间完成他的部分工作。所以我想看看如何使用通知来管理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    相关资源
    最近更新 更多