相关疑难解决方法(0)

调用performSeguewithIdentifier并不会调用shouldperformseguewithIdentifier

我有两个视图控制器.在视图controller1上我有以下内容:

  • 带我到viewcontroller2的segue - 这个segue被命名为"showme"并附加到viewcontroller
  • UIButton的IBAction

在我的代码中,我有按钮按下操作的以下内容

@IBAction func buttonPress(sender: AnyObject) {
    println("button pressed")
        performSegueWithIdentifier("showme", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

我也有以下方法:

override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
    println("Should performing....")
    return true
}   
Run Code Online (Sandbox Code Playgroud)

由于某种原因,永远不会调用shouldPerformSegueWithIdentifier函数.但是,如果我直接在UIButton上将segue添加到ViewController2中.

我已经确认在我的按钮动作中调用它的方向是有效的(见下文),但这不是我理解的工作方式.prepareforSegue也是如此.

@IBAction func buttonPress(sender: AnyObject) {
    println("button pressed")
    if (shouldPerformSegueWithIdentifier("showme", sender: self)){
        performSegueWithIdentifier("showme", sender: self)}
} 
Run Code Online (Sandbox Code Playgroud)

ios segue swift

43
推荐指数
2
解决办法
1万
查看次数

无法登录导致未编码的segue?

我有一个应用程序设置,用户可以登录和注销(这是通过heroku托管的Parse服务器,使用Parse框架处理).

要登录,用户输入凭据,如果服务器验证它们,则segue将它们移动到另一个viewcontroller.注销用户退出应用程序并将其转移回登录屏幕.这些工作正常.

如果初始登录凭据不正确,则会显示警告,提示用户重试并且用户未登录(显然)并保留在登录屏幕上.

但是,如果用户登录,注销,然后输入不正确的凭据(按此顺序,没有关闭模拟器),则会出现问题.错误的凭据会显示提示警报; 点击"确定"关闭警报,用户没有登录,但是视图被锁定到注销屏幕(注销按钮是......这应该只有登录用户才能访问).不存在segue segue(编码或在故事板上),将用户从登录直接移动到注销屏幕.

没有任何操作可行,因为许多操作都需要用户ID,并且没有任何操作因为没有登录.我不知道为什么不正确的登录会以这种方式移动VC,因为不存在可以做到这一点的segue.有一个反向运动(退出时),但没有朝那个方向运动.

有人有什么想法吗?以下是相关的登录代码.

@IBAction func signInTapped(_ sender: UIButton) {
        UIApplication.shared.beginIgnoringInteractionEvents()

        PFUser.logInWithUsername(inBackground: userNameTextField.text!, password: passwordTextField.text!, block: { (user, error) in
            if user != nil{

                self.performSegue(withIdentifier: "signInSegue", sender: self)//if the sign in works    
            } else{

                if let errorString = (error! as NSError).userInfo["error"] as? String{

                    let errorMessage = errorString

                    self.displayAlert("Failed login", message: errorMessage)//this is the code run when the login fails, yet it somehow can sometimes segue to the other viewcontroller
                }   
            }
        })
}
Run Code Online (Sandbox Code Playgroud)

以下是正在进行的分步示意图. 用户从登录页面开始并输入他/她的凭据 这会将用户(现在已登录)分隔为<code>tabbarViewController</code></li>
<li>然后他们导航到另一个选项卡,并有一个注销按钮 …</li></a></p> </div>
        <p>
          <a href=xcode swift parse-server

5
推荐指数
1
解决办法
173
查看次数

标签 统计

swift ×2

ios ×1

parse-server ×1

segue ×1

xcode ×1