2013-02-12 64 views
1

我有一個splitviewcontroller,如果需要登錄,它會調用loginview控制器。這就是我會打電話的模式視圖objective c(ipad)dismissViewControllerAnimated not working

if([[NSUserDefaults standardUserDefaults] objectForKey:@"username"] == nil){ 
     [self performSegueWithIdentifier:@"LoginSegue" sender:self]; 
    } 

這是我的故事板看起來像:

        --- uinavigation 
         - masterview | 
uispliviewcontroller 
         - detailview | 
            --- main dashboard view -(LoginSegue)--loginviewcontroller 
              | 
              |------ another viewcontroller 

現在我可以得到一個LoginView沒有問題,然後我會嘗試關閉該模式所以它可以回到使用此主板視圖

if([[NSUserDefaults standardUserDefaults] objectForKey:@"username"] != nil){ 

     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 

但它不會做任何事情。

想知道如何正確解除登錄後調用的模態視圖?

任何意見是非常感謝。

謝謝!

+0

什麼版本的iOS?您是否確認if語句正在評估爲true並正在執行? – Joel 2013-02-12 06:48:16

+0

6.嗯。不太確定如何確認。 – gdubs 2013-02-12 06:56:02

+0

將NSLog添加到條件語句中,以查看它是否首先到達那裏。 – Joel 2013-02-12 07:04:13

回答

3

對於登錄,模式演示可能更有意義。不要使用segue連接它,請爲LoginViewController提供一個Storyboard ID,例如「LoginViewController」。 (刪除segue,選擇storyboard中的登錄vc,並在身份檢查器中查找storyboard id字段)。

然後,而不是performSegue,做到這一點...

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
[self presentViewController:vc animated:YES completion:^{}]; 

已經做到了這一點,在解僱將作爲你指望它。

+0

讓我試試這個真快。順便說一句,我想了解如何「完成」部分的作品。它似乎可以附加東西嗎?像這樣>> http://stackoverflow.com/a/8021808/639713我不知道他們爲什麼將這些行添加到它。有什麼機會可以解釋一下? – gdubs 2013-02-12 06:57:58

+1

也@Joel是正確的,如果解僱沒有得到執行,這些都不起作用。你可以通過把NSLog(@「關於解僱」)來確認;在那個條件下。 – danh 2013-02-12 07:01:40

+0

是的我已經有了檢查和代碼通過那裏。哦,你推薦的東西工作。只是想知道,是否更有效率(或更好的做法)這樣做(沒有segue和使用故事板ID)或與segue?這是處理splitviews登錄的唯一方法嗎? – gdubs 2013-02-12 07:12:41