IOS-如何以编程方式使用WASTURE?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我正在创建一个应用程序,它使用FacebookSDK对用户进行身份验证。我正在尝试将Facebook逻辑合并到一个单独的类中。下面是代码:

import Foundation

class FBManager {
    class func fbSessionStateChane(fbSession:FBSession!, fbSessionState:FBSessionState, error:NSError?){
        //... handling all session states
        FBRequestConnection.startForMeWithCompletionHandler { (conn: FBRequestConnection!, result: AnyObject!, error: NSError!) -> Void in

            println("Logged in user: \n\(result)");

            let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
            let loggedInView: UserViewController = storyboard.instantiateViewControllerWithIdentifier("loggedInView") as UserViewController

            loggedInView.result = result;

            //todo: segue to the next view???
        }
    }
}

我使用上面的类方法来检查会话状态的变化,它运行得很好。一旦我有了用户的数据,我如何才能从这个自定义类中找到下一个视图?

提问于
用户回答回答于

你可以用NSNotification

在自定义类中添加POST方法:

NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil)

在ViewController中添加一个观察者:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "methodOFReceivedNotication:", name:"NotificationIdentifier", object: nil)

在ViewController中添加函数:

func methodOFReceivedNotication(notification: NSNotification){
    self.performSegueWithIdentifier("yourIdentifierInStoryboard", sender: self)
}
用户回答回答于

如果您的segue存在于故事板中,在两个视图之间有一个segue标识符,则可以使用以下方式以编程方式调用它:

performSegue(withIdentifier: "mySegueID", sender: nil)

对于旧版本:

performSegueWithIdentifier("mySegueID", sender: nil)

你也可以这样做:

presentViewController(nextViewController, animated: true, completion: nil)

或者如果您在导航控制器中:

self.navigationController?.pushViewController(nextViewController, animated: true)

扫码关注云+社区