2013-12-19 36 views
1

我有2 UITextFields,其中一個用於登錄,另一個用於密碼。在故事板登錄成功後執行segue

只有當登錄是「成功」時,我想執行SeguePush到另一個View Controller。但是當我觸摸按鈕時,直接將視圖推送到另一個視圖而不檢查條件。

在StoryBoard中,我從UIButton拖動到我想要推送的視圖控制器,用於通過推送選項創建Segue。

這裏是我的代碼:

- (IBAction)buttonLogin:(id)sender { 
    if (([self.textFieldLogin.text isEqualToString:@"User"]) && ([self.textFieldPassword.text isEqualToString:@"1515"])){ 

     [self performSegueWithIdentifier:@"SegueLogin" sender:self]; 

    }else{ 
     UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"User wrong" 
                 message:@"Fill up again the user info" 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:@"Cancel", nil]; 
     [alert show]; 
    } 
} 

回答

10

你需要從整體UIViewController拖動SEGUE下一UIViewController,即你不應該特別是UIButton(或任何IBOutlet中爲此事)連接到下一個UIViewController如果過渡的條件。

像這樣:

enter image description here

+1

非常感謝!它像一個魅力一樣工作! :D:D – santibernaldo

+0

很高興我能幫忙:) –

1

您使用了錯誤的邏輯運算符。

用戶&&而不是&在你的if語句中。

爲了更好地瞭解兩者之間的差異,我建議您閱讀this其他堆棧溢出的答案。

+0

你是對的。我忘了那個。固定!謝謝;) – santibernaldo

0

斯威夫特4 您仍然可以鏈接到UIButton的視圖控制器,並創建一個Segue公司。如果您的登錄成功,則在您的關閉中調用self.performSegue。像這樣的......

@IBAction func loginButtonPressed(_ sender: AnyObject) { 
     authenticateUser(email: email.text!, password: password.text!) 
} 

func authenticateUser(email: String, password: String){ 
     # Building your loginUrl goes here 

     Alamofire.request(loginUrl!, 
          method: .post, 
          parameters: nil, 
          encoding: JSONEncoding.default, 
          headers: headers) 
      .validate() 
      .responseJSON { (response:DataResponse<Any>) in 
       switch(response.result) { 
       case .success(_): 

        let apiResponse : JSON = JSON(response.result.value!) 

        print("Now Performing Segue on IBAction Pressed") 
        self.performSegue(withIdentifier: "goToDashboard", sender: self) 
        break 

       case .failure(_): 
        print(response.result.error) 
        break 
       } 
      } 
    }