作者y03131003 (Jimmy)
看板MacDev
標題[問題] storyboard的initial view controller
時間Wed Feb 19 22:42:05 2014
我的界面是用storyboard拉的
第一個頁面是登入頁面
登入完會進入一個TabBarViewController
我希望只要登入過後
下次開啟app的時候跳過登入頁面
直接進入TabBarViewController
所以我在登入頁面寫了以下程式
- (void)viewWillAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (已登入)
{
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"Main"
bundle:nil];
TabBarViewController *tabVC = [sb instantiateViewControllerWithIdentifier:
@"TabBar"];
[self presentViewController:tabVC animated:NO completion:nil];
}
}
這樣去跑會有錯誤
whose view is not in the window hierarchy!
原因是presentViewController一定要在viewDidAppear之後呼叫
所以我把程式碼移到viewDidAppear
不過這樣的話,登入頁面還是會出現一瞬間,才present我的TabBarViewController
請問要怎麼做才能讓登入頁面完全不要出現呢?
有想到一個做法是把登入頁面的所有元件先隱藏..沒有登入才顯示
但總覺得應該有更好的做法XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.72
1F:推 whitefur:keyWindow.rootViewController = tabbarController 02/20 10:08
2F:→ whitefur:主功能不要用present的了, 因為你不是隨時都會回登入畫面 02/20 10:10
3F:→ whitefur:直接把整個rootViewController換掉 02/20 10:11
4F:→ y03131003:root改成tabbar 然後在tabbar判斷要不要present登入畫 02/20 12:20
5F:→ y03131003:面嗎? 02/20 12:20
6F:→ howdiun:TabBarViewController新增storyboard ID,直接呼叫他 02/20 15:02
7F:→ whitefur:一開始的rootVC一樣是登入, 不需要登入畫面的話就把 02/21 10:33
8F:→ whitefur:rootVC換成tabbarController 02/21 10:34
9F:→ whitefur:if(已登入) rootViewController = tabbarController; 02/21 10:34
10F:→ y03131003:感謝,修改rootViewController成功了! 02/21 17:04
11F:→ benck:我覺得你這樣好複雜... 02/22 09:50
12F:→ benck:我的做法是,用storyboard直接就拉一個tab view controller 02/22 09:51
13F:→ benck:設成root 02/22 09:51
14F:→ benck:然後在第一個tab的viewdidload裡面判斷 02/22 09:51
15F:→ benck:如果未登入的話,就present 你的登入modal view 02/22 09:51
16F:→ benck:login的vc也可以在storyboard拉,就更簡單了,直接 02/22 09:53
17F:→ benck:performsegue 02/22 09:53
18F:→ y03131003:viewDidLoad裡面好像不能執行present的動作 02/23 18:14
19F:→ y03131003:會有whose view is not in the window hierarchy!的錯誤 02/23 18:14