簡體   English   中英

如何取消連接到UIButton的segue

[英]How do I cancel a segue that is connected to an UIButton

我正在編寫本教程 ,該教程展示了如何使用故事板創建應用程序。 我的viewController有兩個UIButtons,我已經將一個segue連接到那些UIButtons。 這些segue推出了一個新的viewController。

現在我正在尋找一種方法來取消這個segue如果某個條件變為真。 當我使用舊的xib文件來創建我的界面時,我能夠做到這樣的事情:

-(IBAction)sendButton:(id)sender {
  if(TRUE) {
    // STOP !!  
  }
}

這不再起作用了。 如何取消推送新的viewController?

不。 您無法取消直接鏈接到UIButton等界面元素的segue。

但有一個解決方法。

  1. 刪除鏈接到按鈕的segue
  2. 從viewController(帶按鈕的那個)添加一個segue到應該被推送的viewController。 這必須是未連接到界面元素的segue。 為此,您可以從狀態欄啟動segue。 或者在左側邊欄中創建segue。
  3. 選擇此segue,打開屬性檢查器並更改segue的標識符(例如PushRedViewController)
  4. 選擇Xcodes助手視圖,這樣你就可以看到帶有按鈕的viewController的.h文件。
  5. 將按鈕連接到動作。 要執行此操作,請選擇按鈕並按住Ctrl鍵並拖動到.h文件。 在菜單中選擇操作並命名您的操作(例如redButtonPressed :)
  6. 打開viewController的實現
  7. 將步驟5中的操作更改為以下內容:

     - (IBAction)redButtonPressed:(id)sender { [self performSegueWithIdentifier:@"PushRedViewController" sender:sender]; } 

您可以通過在代碼中添加以下方法來實現此目的

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender   {

if([identifier isEqualToString:@"btnSegue"])
{

   return YES;
}
else{
    return NO;
}

}

讓我們假設您的segue是btnSegue。如果您需要根據某些條件執行segue,您可以使用以下代碼

if(check)
{
 [self performSegueWithIdentifier:@"btnSegue" sender:self];
}

如果檢查是BOOL,您可以根據您的條件設置真或假。

暫無
暫無

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

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