[問題] storyboard的initial view controller

看板MacDev作者 (Jimmy)時間10年前 (2014/02/19 22:42), 編輯推噓1(1018)
留言19則, 4人參與, 最新討論串1/1
我的界面是用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

02/20 10:08, , 1F
keyWindow.rootViewController = tabbarController
02/20 10:08, 1F

02/20 10:10, , 2F
主功能不要用present的了, 因為你不是隨時都會回登入畫面
02/20 10:10, 2F

02/20 10:11, , 3F
直接把整個rootViewController換掉
02/20 10:11, 3F

02/20 12:20, , 4F
root改成tabbar 然後在tabbar判斷要不要present登入畫
02/20 12:20, 4F

02/20 12:20, , 5F
面嗎?
02/20 12:20, 5F

02/20 15:02, , 6F
TabBarViewController新增storyboard ID,直接呼叫他
02/20 15:02, 6F

02/21 10:33, , 7F
一開始的rootVC一樣是登入, 不需要登入畫面的話就把
02/21 10:33, 7F

02/21 10:34, , 8F
rootVC換成tabbarController
02/21 10:34, 8F

02/21 10:34, , 9F
if(已登入) rootViewController = tabbarController;
02/21 10:34, 9F

02/21 17:04, , 10F
感謝,修改rootViewController成功了!
02/21 17:04, 10F

02/22 09:50, , 11F
我覺得你這樣好複雜...
02/22 09:50, 11F

02/22 09:51, , 12F
我的做法是,用storyboard直接就拉一個tab view controller
02/22 09:51, 12F

02/22 09:51, , 13F
設成root
02/22 09:51, 13F

02/22 09:51, , 14F
然後在第一個tab的viewdidload裡面判斷
02/22 09:51, 14F

02/22 09:51, , 15F
如果未登入的話,就present 你的登入modal view
02/22 09:51, 15F

02/22 09:53, , 16F
login的vc也可以在storyboard拉,就更簡單了,直接
02/22 09:53, 16F

02/22 09:53, , 17F
performsegue
02/22 09:53, 17F

02/23 18:14, , 18F
viewDidLoad裡面好像不能執行present的動作
02/23 18:14, 18F

02/23 18:14, , 19F
會有whose view is not in the window hierarchy!的錯誤
02/23 18:14, 19F
文章代碼(AID): #1J1CB0Ek (MacDev)