2014-07-23 60 views
1

我有一個類別UIViewController,處理來自我的網絡層的錯誤。如果我收到網絡呼叫的驗證錯誤,我想要執行一個取消退出,將我帶回LoginViewController我可以發送performSegueWithIdentifier:除了自我以外的任何東西嗎?

但是,我不想在我的故事板中的每個單獨的視圖控制器中添加適當的展開順序到。我可以簡單地宣佈在UITabBarController這是在我的視圖控制器導航「頂」回捲SEGUE,然後說

[self.tabBarController performSegueWithIdentifier:@"UnwindToLoginSegueIdentifier" sender:self]

...從我UIViewController + ErrorHandling類別裏面?

+0

我找不到任何有關在文檔中發送'performSegueWithIdentifier:'發送給自己以外任何東西的有效性,並且當我嘗試它時,我得到一個EXC_BAD_ACCESS - 但我不確定這是不是我正在做其他的蠢事。 –

回答

0

不,你不能那樣做。 unwind segue必須來自您要展開的控制器,並且所有賽段都需要從故事板中的特定實例進行連接。登錄視圖控制器實際上應該是模態顯示的,不是其中一個選項卡,因爲您只需要簡單地使用它,那麼它應該消失。如果以這種方式設置您的應用程序,則可以從任何控制器呈現和解除它(在第一個選項卡中不顯示控制器的動畫,如果這是用戶在應用程序啓動時看到的內容)。除非您使用所有其他控制器繼承的功能構建通用基本控制器,否則每個控制器中都必須有代碼才能執行此操作。

+0

嗯,我已經修復了導致EXC_BAD_ACCESS並且現在正在工作的(切線相關的)問題。你能提供一些文檔的參考嗎? –

+0

@RobertAtkins,什麼工作,你在說什麼文件?實際上,當我考慮它時,我不確定在標籤欄控制器中使用它時什麼是放鬆手段。通常情況下,展開會撤銷一系列推送和/或演示,但標籤欄控制器中的標籤與標籤欄控制器之間沒有這種關係。在哪個控制器中,您在故事板中設置了名爲「UnwindToLoginSegueIdentifier」的segue? – rdelmar

+0

調用[self.tabBarController performSegue ...]正確地觸發了從作爲標籤欄控制器的根之一的導航控制器內嵌入的任意VC中展開的順序。在標籤欄控制器上聲明的展開順序展開到登錄控制器,該登錄控制器首先(模式地)推動標籤欄控制器。我正在尋找說明你可以或者你不能發送'performSegueWithIdentifier:',或者支持你的陳述的東西的文檔。「放開的segue必須來自你正在展開的控制器」,因爲那不是我觀察到的。 –

相關問題