如何在swift中登录viewController后设置swrevealController

Sathya chinnasamy

我正在开发一个应用程序,其中在登录页面中有登录页面和仪表板页面,用户可以使用facebook登录,登录后我导航用户以控制面板一切正常

但是在仪表板中,我将添加侧菜单(通过使用SWRevealViewcontroller),如果我将swrevealviewcontroller设置为intialView,则可以,但是我看不到登录页面

首先,我必须带上登录页面,然后将其移至仪表板(其中包含侧菜单项)。在这里,我使用了两个navigationControllers,一个用于登录,另一个用于swrevealViewcontroller

我现在不知道如何从登录页面移动到仪表板(其中包含侧菜单项)

这是我的应用程序代表

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        print("at delegate")
        var configureError: NSError?
        GGLContext.sharedInstance().configureWithError(&configureError)
        assert(configureError == nil, "Error configuring Google services: \(configureError)")
        GIDSignIn.sharedInstance().delegate = self


        if NSUserDefaults.standardUserDefaults().boolForKey("kUserLogin")
        {
            let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let root:UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("RevealView")
            self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
            self.window?.rootViewController = root
            self.window?.makeKeyAndVisible()
        }
        else
        {
            let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("loginView") as UIViewController
            let nav:UINavigationController = UINavigationController.init(rootViewController: initialViewControlleripad)
            self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
            self.window?.rootViewController = nav
            self.window?.makeKeyAndVisible()
        }

            return  FBSDKApplicationDelegate.sharedInstance().application(application,

                                                                          didFinishLaunchingWithOptions:launchOptions) || true
    }

这是我的登录按钮功能

 func loginButton(loginButton: FBSDKLoginButton!,didCompleteWithResult result : FBSDKLoginManagerLoginResult!, error: NSError!)

    {
         print("come to ")
        FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"name,picture.type(large),gender,email"]).startWithCompletionHandler { (connection, result, error) -> Void in
            print("come to print")
            let strName: String = (result.objectForKey("name") as? String)!
            print("before getting token")
           var token = FBSDKAccessToken.currentAccessToken().tokenString
            print(token)
            print("after getting token")
            print(result)
            let Gender : String = (result.objectForKey("gender") as? String)!
            let Id = (result.objectForKey("id") as? String)!
             let deviceId = UIDevice.currentDevice().identifierForVendor?.UUIDString
          let UUID = NSUUID().UUIDString
            print(UUID)
            var DeviceId = deviceId
            print(DeviceId)
            print(Id)
            print(Gender)
             print(strName)
           var strEmail : String
            if ((result.objectForKey("email") as? String) != nil){
                strEmail = (result.objectForKey("email") as? String)!
            }else {
                strEmail = "not available"
            }
            //let strEmail: String = (result.objectForKey("email") as? String)!
            var userID = result["id"] as! NSString
            var facebookProfileUrl = "http://graph.facebook.com/\(userID)/picture?type=large"
           // print(strEmail)
            let request = NSMutableURLRequest(URL: NSURL(string: "http://projects.svirtzone.com/wified/api/authentication.php")!)
            request.HTTPMethod = "POST"
            let postString = "username=\(strName)&email=\(strEmail)&action=auth&pic=\(facebookProfileUrl)&dob=1989/05/05&logintype=Facebook&gender=\(Gender)&device_type=Mac&facebookid=\(Id)&agerange=15&deviceid=\(deviceId)&accesstoken=\(token)"
            request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
                guard error == nil && data != nil else {                                                          // check for fundamental networking error
                    print("error=\(error)")
                    return
                }
                if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {           // check for http errors
                    print("statusCode should be 200, but is \(httpStatus.statusCode)")
                    print("response = \(response)")
                }

                let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
                print("responseString = \(responseString)")
            }
            task.resume()
                              }

        if(error != nil){

            print(error.localizedDescription)
            return
        }
       print("before main view")
        let defaults = NSUserDefaults.standardUserDefaults()
        if !defaults.boolForKey("kUserLogin")
        {
            print("inside if***")
            defaults.setBool(true, forKey: "kUserLogin")
        }
        NSUserDefaults.standardUserDefaults().setBool(false, forKey: "kUserLogin")
        let app = UIApplication.sharedApplication().delegate as! AppDelegate
        let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("RevealView") as UIViewController
        let nav:UINavigationController = UINavigationController.init(rootViewController: initialViewControlleripad)
        app.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        app.window?.rootViewController = nav
        app.window?.makeKeyAndVisible()     

    }

这是我的主要viewController(我用swrevealViewController设置了它)在这里,我有侧边菜单项“菜单”,此项目现在禁用

 @IBOutlet var Menu: UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()        
        Menu.target = self.revealViewController()
        Menu.action = Selector("revealToggle:")
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())    

    }

这是我在appDelegate中的Google登录代码

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
            withError error: NSError!) {

    if (error == nil) {
       print("at delegate5")
        // Perform any operations on signed in user here.
        let userId = user.userID                  // For client-side use only!
        let idToken = user.authentication.idToken // Safe to send to the server
        let fullName = user.profile.name
        let givenName = user.profile.givenName
        let familyName = user.profile.familyName
        let email = user.profile.email
        var imageURL = ""
        if user.profile.hasImage {
            imageURL = user.profile.imageURLWithDimension(100).absoluteString
        }

        NSNotificationCenter.defaultCenter().postNotificationName(
            "ToggleAuthUINotification",
            object: nil,
            userInfo: ["statusText": "Signed in user:\n\(fullName)","email" : email, "imageURL" : imageURL])
         print( imageURL)
       let postString = "username=\(fullName)&email=\(email)&action=auth&pic=\(imageURL)&dob=1989/05/05&logintype=Google&gender=female&device_type=Mac&facebookid=no&agerange=15&deviceid=not available&accesstoken=\(idToken)"
        let request = NSMutableURLRequest(URL: NSURL(string: "http://projects.svirtzone.com/wified/api/authentication.php")!)
        request.HTTPMethod = "POST"
                    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
            guard error == nil && data != nil else {                                                          // check for fundamental networking error
                print("error=\(error)")
                return
            }
            if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {           // check for http errors
                print("statusCode should be 200, but is \(httpStatus.statusCode)")
                print("response = \(response)")
            }

            let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print("responseString = \(responseString)")
        }
        task.resume()

     } else {

        print("\(error.localizedDescription)")

        NSNotificationCenter.defaultCenter().postNotificationName(
            "ToggleAuthUINotification", object: nil, userInfo: nil)
        let defaults = NSUserDefaults.standardUserDefaults()
        if !defaults.boolForKey("kUserLogin")
        {
            print("inside if***")
            defaults.setBool(true, forKey: "kUserLogin")
        }
               }
  NSUserDefaults.standardUserDefaults().setBool(false, forKey: "kUserLogin")
    let app = UIApplication.sharedApplication().delegate as! AppDelegate
    let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("RevealView") as UIViewController
    let nav:UINavigationController = UINavigationController.init(rootViewController: initialViewControlleripad)
    app.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    app.window?.rootViewController = nav
    app.window?.makeKeyAndVisible()   

}

有人可以帮我吗?

Sanjeet Verma

试试这个,希望对您有所帮助!!!

登录成功后,在LoginViewController中设置标志值

 let defaults = NSUserDefaults.standardUserDefaults()
 if !defaults.boolForKey("kUserLogin")
 {
        defaults.setBool(true, forKey: "kUserLogin")
 }

注销时,设置标志值并使“登录屏幕”为根用户

NSUserDefaults.standardUserDefaults().setBool(false, forKey: "kUserLogin")
let app = UIApplication.sharedApplication().delegate as! AppDelegate
let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("LoginViewController") as UIViewController
let nav:UINavigationController = UINavigationController.init(rootViewController: initialViewControlleripad)
app.window = UIWindow(frame: UIScreen.mainScreen().bounds)
app.window?.rootViewController = nav
app.window?.makeKeyAndVisible()

步骤2将Rootviewcontroller设置为SVrevealviewcontroller

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    if NSUserDefaults.standardUserDefaults().boolForKey("kUserLogin")
        {
            let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let root:UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("RootViewController")
            self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
            self.window?.rootViewController = root
            self.window?.makeKeyAndVisible()
        }
        else
        {
            let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("LoginViewController") as UIViewController
            let nav:UINavigationController = UINavigationController.init(rootViewController: initialViewControlleripad)
            self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
            self.window?.rootViewController = nav
            self.window?.makeKeyAndVisible()
        }

        return true
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在登录ViewController的Xcode 6中设置约束

来自分类Dev

如何在PHP中取消设置后设置值

来自分类Dev

在React中,如何在Provider的值更改后设置状态?

来自分类Dev

如何在 Bash 中的 heredoc 之后设置参数

来自分类Dev

如何在 display = block 后设置 scrollTop

来自分类Dev

如何在UIImageVIew内部向后设置一组UIImage动画-Swift-以编程方式

来自分类Dev

如何在 Swift 中呈现 VC 并设置为新的 Root viewController?

来自分类Dev

如何在AngularJS中设置登录页面

来自分类Dev

如何在Codeigniter中设置永久登录?

来自分类Dev

如何在Codeigniter中设置永久登录?

来自分类Dev

如何在AngularJS中设置登录页面

来自分类Dev

如何在 splat ReactiveUI 中设置登录?

来自分类Dev

如何在VBA中用日期设置变量后设置时间

来自分类Dev

如何在React中每四位数后设置自动空间

来自分类Dev

如何在我的代码背后设置的Javascript中访问变量

来自分类Dev

如何在 Spock Groovy 的 THEN 阶段中的预期模拟方法调用之后设置变量?

来自分类Dev

如何在onClick元素后设置回调函数?

来自分类Dev

ReactJS,挂钩-如何在.map()函数之后设置状态?

来自分类Dev

如何在unsafeWindow.open之后设置“加载”操作

来自分类Dev

jQuery Datepicker如何在页面加载后设置默认日期

来自分类Dev

如何在onClick元素后设置回调函数?

来自分类Dev

如何在某个日期后设置 Python 脚本的到期时间

来自分类Dev

iOS如何在Container ViewController中设置透明

来自分类Dev

如何在Swift中从AppDelegate更改ViewController中的文本标签?

来自分类Dev

在用户登录后设置会话超时

来自分类Dev

如何在文本字段中的“表达式在打印时”返回true后设置变量值

来自分类Dev

如何在Swift中获取对先前viewController的引用?

来自分类Dev

如何在Swift中的多个ViewController之间共享数据

来自分类Dev

如何在Swift中获取对先前viewController的引用?

Related 相关文章

  1. 1

    如何在登录ViewController的Xcode 6中设置约束

  2. 2

    如何在PHP中取消设置后设置值

  3. 3

    在React中,如何在Provider的值更改后设置状态?

  4. 4

    如何在 Bash 中的 heredoc 之后设置参数

  5. 5

    如何在 display = block 后设置 scrollTop

  6. 6

    如何在UIImageVIew内部向后设置一组UIImage动画-Swift-以编程方式

  7. 7

    如何在 Swift 中呈现 VC 并设置为新的 Root viewController?

  8. 8

    如何在AngularJS中设置登录页面

  9. 9

    如何在Codeigniter中设置永久登录?

  10. 10

    如何在Codeigniter中设置永久登录?

  11. 11

    如何在AngularJS中设置登录页面

  12. 12

    如何在 splat ReactiveUI 中设置登录?

  13. 13

    如何在VBA中用日期设置变量后设置时间

  14. 14

    如何在React中每四位数后设置自动空间

  15. 15

    如何在我的代码背后设置的Javascript中访问变量

  16. 16

    如何在 Spock Groovy 的 THEN 阶段中的预期模拟方法调用之后设置变量?

  17. 17

    如何在onClick元素后设置回调函数?

  18. 18

    ReactJS,挂钩-如何在.map()函数之后设置状态?

  19. 19

    如何在unsafeWindow.open之后设置“加载”操作

  20. 20

    jQuery Datepicker如何在页面加载后设置默认日期

  21. 21

    如何在onClick元素后设置回调函数?

  22. 22

    如何在某个日期后设置 Python 脚本的到期时间

  23. 23

    iOS如何在Container ViewController中设置透明

  24. 24

    如何在Swift中从AppDelegate更改ViewController中的文本标签?

  25. 25

    在用户登录后设置会话超时

  26. 26

    如何在文本字段中的“表达式在打印时”返回true后设置变量值

  27. 27

    如何在Swift中获取对先前viewController的引用?

  28. 28

    如何在Swift中的多个ViewController之间共享数据

  29. 29

    如何在Swift中获取对先前viewController的引用?

热门标签

归档