簡體   English   中英

沒有按鈕 xcode Swift 2 激活時,Segue 將無法執行

[英]Segue won't perform when activated without a button xcode Swift 2

我正在嘗試制作一個 IOS 應用程序並檢查用戶是否已登錄。 當用戶沒有登錄時,它應該顯示一個登錄表單。 我創建了多個視圖控制器並將它們與 segue 連接起來。 比我使用self.performSegueWithIdentifier("userLoggedOff", sender: self)來激活 segue。 但是出現錯誤EXC_BAD_ACCESS

但是,當我嘗試使用鏈接到按鈕的相同代碼激活相同的 segue 時,一切正常。 真的很令人沮喪......感謝您的幫助。

這是完整的代碼。 我使用 JSON 來獲取用戶的帳戶信息。 這可能不是這樣做的方法,但我是 xcode、swift 和應用程序制作的初學者。

import UIKit
import WebKit

class StartController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        checkLoginStatus_main()
    }

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

    func checkLoginStatus_main(){
        let requestURL: NSURL = NSURL(string: "https://www.example.net/account/accountinfo.php")!
        let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
        let session = NSURLSession.sharedSession()
        let task = session.dataTaskWithRequest(urlRequest) {
            (data, response, error) -> Void in


            let httpResponse = response as! NSHTTPURLResponse
            let statusCode = httpResponse.statusCode

            if (statusCode == 200) {

                do{

                    let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments)

                    if let accounts = json["account"] as? [[String: AnyObject]] {

                        for account in accounts {

                            if let status = account["status"] as? String {

                                if let name = account["name"] as? String {
                                    if(status == "true"){
                                        print("LoggedIn") // THIS WORKS
                                        self.continueScanner()

                                    } else {
                                        print("LoggedOut") // THIS WORKS
                                        self.continueLoginForm()
                                    }
                                }

                            }
                        }

                    }

                }catch {
                    print("Error with Json: \(error)")
                }

            }

        }
        task.resume()
    }

    func continueLoginForm(){
        self.performSegueWithIdentifier("userLoggedOff", sender: self)
    }

    func continueScanner(){
        self.performSegueWithIdentifier("userLoggedIn", sender: self)
    }
}

這是錯誤:錯誤的屏幕截圖

這是完整的輸出:

LoggedOut
1   0x18771c654 <redacted>
2   0x1834bcfe4 <redacted>
3   0x1834b1e50 _os_once
4   0x1834ba728 pthread_once
5   0x1886a6d98 <redacted>
6   0x1886a6680 WebKitInitialize
7   0x188c4bfa0 <redacted>
8   0x100791a3c _dispatch_client_callout
9   0x1007928b4 dispatch_once_f
10  0x182ebcfc8 <redacted>
11  0x182ec38b8 <redacted>
12  0x182ecdd78 <redacted>
13  0x188f9c130 <redacted>
14  0x188f9c2cc <redacted>
15  0x188f9be9c <redacted>
16  0x188ca9ff4 <redacted>
17  0x188f9c154 <redacted>
18  0x188f9be9c <redacted>
19  0x188e780a0 <redacted>
20  0x188f9c154 <redacted>
21  0x188f9c2cc <redacted>
22  0x188f9be9c <redacted>
23  0x188e773d4 <redacted>
24  0x188d19140 <redacted>
25  0x188addfcc <redacted>
26  0x1889a07ec <redacted>
27  0x1889a0744 <redacted>
28  0x18928f504 <redacted>
29  0x188cfcca0 <redacted>
30  0x188d22a04 <redacted>
31  0x188d257a0 <redacted>

@Paulw11 已經解決了我帖子評論中的問題。

dispatch_async(dispatch_get_main_queue(), { self.performSegue...

謝謝大家的幫助!

我認為您可能需要實施 prepareForSegue

    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
        if (segue.identifier == "userLoggedOff") {
            let vc = segue.destinationViewController as? LogInScreenViewController
        } else if (segue.identifier == "userLoggedIn") {
            let vc = segue.destinationViewController as? UserLoggedInViewController 
//This should be the name of whatever view controller they go to if they are logged in.
    }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM