2013-06-27 83 views
1

我想有一個主視圖控制器,檢查用戶是否已經登錄。如果是這樣,它會跳轉到一個選項卡視圖控制器。如果沒有,它會延伸到一個登錄視圖控制器,該控制器處理登錄,然後繼續到選項卡視圖控制器。創建一個條件segue

爲了測試一個特徵的segue方面,我創建了一個單獨的項目。我創建了3個視圖控制器 - UIViewController的所有子類。其中一個是主視圖控制器,另外兩個是簡單視圖控制器,條件繼續會發生。

我閱讀有關線程建立「扳機」賽格瑞how to apply condition based custom segue in storyboard

如何創建兩個扳機塞格斯這樣我手動選擇在運行時根據用戶是否登錄只執行兩個中的一個或不?或者有什麼不同的方式來實現這種相當普遍的情況?

+0

在主視圖控制器中是否有按鈕或某個其他UI元素導致激活兩個segues中的一個? – dasblinkenlight

+0

謝謝dasblinkenlight。不,沒有按鈕,這就是爲什麼它是無觸點的。我已經解決了這個問題。出於某種原因,我無法從源視圖創建一個segue到第二個視圖,並且假定您只能創建一個segue。我試了一遍,它的工作。由於我的segue是「推」,我不得不將源視圖控制器嵌入到導航視圖控制器中。得到它的工作。謝謝。 – serverman

回答

1

如何創建兩個無觸發段,以便在運行時手動選擇僅執行其中一個,具體取決於用戶是否登錄?

  • 創建第一個觸發式SEGUE導致登錄屏幕;給它一個標識符,比如說,needLogin
  • 創建第二個觸發器,導致標籤視圖;給它一個標識符,比方說,whenLoggedIn
  • 定義主視圖控制器的作用,並把這個代碼及其相關的方法:


// This is attached to the button on the main screen 
-(void)onCheckLogin { 
    if (userIsLoggedIn) { 
     [self performSegueWithIdentifier:@"whenLoggedIn" sender:self]; 
    } else { 
     [self performSegueWithIdentifier:@"needLogin" sender:self]; 
    } 
} 
+0

是的,我自己也得出了同樣的結論 - 但將您的答案標記爲正確。謝謝。 – serverman

0

我假設你知道如何檢查是否已登錄或註銷。
嘗試這樣的:

if (loggedIn) { 
    [self performSegueWithIdentifier:@"GoToViewController1" sender:self]; 
} else if (loggeOut) { 
    // Segue to Login viewController 
    [self performSegueWithIdentifier:@"GoToLoginViewController" sender:self]; 
} 

注:在stoyboard,你只能從你的viewController創建SEGUE,而不是從一個UIButton或從那裏賽格瑞是可能的任何其它對象。