ios - 使用 Parse 注册后,performSegueWithIdentifier 不起作用

标签 ios swift parse-platform

我正在使用 performSegueWithIdentifier,所有这些都正常,但有一个根本不起作用。

我正在使用 Parse.com 注册用户,我想在他们注册后执行 segue,但我无法让它工作。我认为 PerformSegue 应该放在函数 signUpViewController

enter image description here

我的代码:

import UIKit
import Parse
import ParseUI
import Bolts
import FBSDKCoreKit
import FBSDKLoginKit
import FBSDKShareKit
import CoreLocation

struct localizacaoActualizada {

static var rua = ""
static var localidade = ""
static var codigopostal = ""
static var giropostal = ""
static var country = ""


}


class ViewController: UIViewController, ENSideMenuDelegate, PFLogInViewControllerDelegate, PFSignUpViewControllerDelegate, CLLocationManagerDelegate {



var logInViewController: PFLogInViewController! = PFLogInViewController()
var signUpViewController: PFSignUpViewController! = PFSignUpViewController()

var localidadeActual = ""

@IBOutlet weak var userLogedIn: UILabel!

let locationManager = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()

    self.sideMenuController()?.sideMenu?.delegate = self

    self.locationManager.delegate = self
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
    self.locationManager.requestWhenInUseAuthorization()
    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.startUpdatingLocation()



    // Se ta loggado
    var user = PFUser.currentUser()


    if (user?.username != nil) {



      //  self.performSegueWithIdentifier("aposLogin", sender: self)


    }



}


override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)

    var user = PFUser.currentUser()
    self.userLogedIn.text = user?.username




     if (user?.username == nil) {

        self.logInViewController.fields = ( PFLogInFields.UsernameAndPassword | PFLogInFields.LogInButton | PFLogInFields.SignUpButton | PFLogInFields.PasswordForgotten | PFLogInFields.DismissButton )

        //PFLogInFields.Facebook




        var logInLogoTitle = UILabel()
        logInLogoTitle.text = "ParaFora"

        var SignUpLogoTitle = UILabel()
        SignUpLogoTitle.text = "ParaFora"

        //self.logInViewController.facebookPermissions = [ "friends_about_me" ]
        self.logInViewController.logInView!.logo = logInLogoTitle
        self.logInViewController.delegate = self
        self.signUpViewController.signUpView!.logo = SignUpLogoTitle
        self.signUpViewController.delegate = self
        self.logInViewController.signUpController = self.signUpViewController

    }

     else {

        //Tentativa 1
        //self.locationManager.stopUpdatingLocation()
        var user = PFUser.currentUser()
        user?["localidade"] = localidadeActual
        user?.saveInBackground()



        //tentativa 2

        //var user = PFUser.currentUser()
        //var idUser = user?["objectId"] as! String
       // println("O id do utilizador actual:" + idUser)

       // var query = PFQuery(className:"User")
       // query.getObjectInBackgroundWithId(idUser) {
       //     (User: PFObject?, error: NSError?) -> Void in
       //     if error != nil {
       //         println(error)
       //     } else if let User = User {
      //          println("Tentativa de escrever" + self.localidadeActual + "no servidor")
      //          User["localidade"] = self.localidadeActual
      //          User.saveInBackground()
     //           println("done?")
     //       }
       // }
        //



   // self.performSegueWithIdentifier("aposLogin", sender: self)
    }
}

//Localizacao

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!)
{

    CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error)->Void in

        if (error != nil)
        {
            println("Error: " + error.localizedDescription)
            return
        }

        if placemarks.count > 0
        {
            let pm = placemarks[0] as! CLPlacemark
            self.displayLocationInfo(pm)
        }
        else
        {
            println("Error with the data.")
        }
    })
}


func displayLocationInfo(placemark: CLPlacemark)
{
    locationManager.stopUpdatingLocation()
    //self.locationManager.stopUpdatingLocation()
    println(placemark.locality)
    println(placemark.postalCode)
    println(placemark.administrativeArea)
    println(placemark.country)
    println(placemark.location)
    println(placemark.administrativeArea)
    println(placemark.subAdministrativeArea)

//        println(placemark.addressDictionary)
  //      println(placemark.areasOfInterest)

    localidadeActual = placemark.locality
    localizacaoActualizada.rua = placemark.name
    localizacaoActualizada.localidade = placemark.locality

    //Guarda o codigo postal na estrutura
    if count(placemark.postalCode) > 4{
    localizacaoActualizada.codigopostal = placemark.postalCode.substringWithRange(Range<String.Index>(start: advance(placemark.postalCode.startIndex, 0), end: advance(placemark.postalCode.endIndex, -3)))
    localizacaoActualizada.giropostal = placemark.postalCode.substringWithRange(Range<String.Index>(start: advance(placemark.postalCode.startIndex, 4), end: advance(placemark.postalCode.endIndex, 0)))

    }

    else {
        localizacaoActualizada.codigopostal = placemark.postalCode
    }





    // Obtem a localidade no serv


    var user = PFUser.currentUser()
    println(user?["localidade"])
    //fim obter localidade

}

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)
{
    println("Error: " + error.localizedDescription)
}

//fim local


// MARK: Parse Login

func logInViewController(logInController: PFLogInViewController, shouldBeginLogInWithUsername username: String, password: String) -> Bool {


    if (!username.isEmpty || !password.isEmpty) {
        return true
    }else {
        return false
    }

}



func logInViewController(logInController: PFLogInViewController, didLogInUser user: PFUser) {

    self.dismissViewControllerAnimated(true, completion: nil)

    self.performSegueWithIdentifier("aposLogin", sender: self)


}

func logInViewController(logInController: PFLogInViewController, didFailToLogInWithError error: NSError?) {
    println("Failed to login...")
}

func logInViewControllerDidCancelLogIn(logInController: PFLogInViewController) {

}

// MARK: Parse Signup

func signUpViewController(signUpController: PFSignUpViewController, didSignUpUser user: PFUser) {


    self.dismissViewControllerAnimated(true, completion: nil)

     self.performSegueWithIdentifier("setupCliente", sender:self)


}
func signUpViewController(signUpController: PFSignUpViewController, didFailToSignUpWithError error: NSError?) {

    println("FAiled to sign up...")

}



func signUpViewControllerDidCancelSignUp(signUpController: PFSignUpViewController) {

    println("User dismissed sign up.")

}

// MARK: Actions

@IBAction func simpleAction(sender: AnyObject) {

    self.presentViewController(self.logInViewController, animated: true, completion: nil)

}



@IBAction func logoutAction(sender: AnyObject) {

    PFUser.logOut()

}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func toggleSideMenu(sender: AnyObject) {
    toggleSideMenuView()
}

// MARK: - ENSideMenu Delegate
func sideMenuWillOpen() {
    println("sideMenuWillOpen")
}

func sideMenuWillClose() {
    println("sideMenuWillClose")
}

func sideMenuShouldOpenSideMenu() -> Bool {
    println("sideMenuShouldOpenSideMenu")
    return true
}
}

最佳答案

在您的signUpViewController函数中,您将关闭当前 View Controller ,然后将发送者作为您刚刚关闭的 View Controller 调用performSegueWithIdentifier。尝试删除missViewControllerAnimated方法调用

关于ios - 使用 Parse 注册后,performSegueWithIdentifier 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32070927/

相关文章:

xcode - 尝试从查询中将 Parse PFFiles 加载到 UITableView

ios - 如何将证书从开发切换到生产?

iphone - 是否可以推送到另一个 View Controller ,然后从该 View Controller 中访问一个方法?

ios - splitViewController showDetailViewController 没有动画?

android - 什么是 eCpm 填充率 rpm

arrays - 'Int' 不能转换为 'Range<Int>

ios - iOS 中的缩略图创建改进

swift - 引用实例方法需要等效性 (SWIFT)

ios - 重新加载 map 注释时出现问题

带有 ContentProvider 和 BaaS 的 Android SQLite