我有一個應用程序與兩個故事板。一個用於登錄,另一個用於其他應用程序。第二個在用戶登錄時(通過NSNotification
觀察員)使用[storyboard instantiateInitialViewController]
獲取第一個控制器(UITabBarController
),並將其設置爲rootViewController
(所有這些都在應用程序委託中)時加載。UITabBarController圖標和色調不顯示一段時間
該問題只發生在用戶第一次登錄時。標籤欄不顯示背景(除非我設置了背景,但它顯示爲純色而不是有色的默認樣式),並且不會顯示選項卡欄圖標,除了所選的那個。幾秒鐘後,刷新並顯示所有圖標和有色背景。
應用程序中沒有其他代碼修改標籤欄,除了自己的控制器在收到通知時更新徽章。自動刷新所花費的時間各不相同,有時大約需要2秒,而其他時間則不會更新,除非您選擇每個(五個)選項卡。爲了重現這一點,我需要每次卸載應用程序,因爲第一次使用後,標籤欄的行爲正常。圖標在故事板文件中設置,不會以編程方式更新。
這裏的標籤欄的截圖,因爲它顯示了第一次: http://i.stack.imgur.com/gqT5X.png
,這是它的外觀(也應該)一段時間後: http://i.stack.imgur.com/9y8ch.png
編輯:添加一些加載代碼
這是一個既加載故事板代碼:
- (void)showInterface {
UIStoryboard *storyboard;
UIViewController *viewController;
if ([[self.configuration userManager] userIsLoggedIn]) {
storyboard = [UIStoryboard storyboardWithName:MAIN_STORYBOARD_NAME bundle:nil];
CWNTabBarController *tabController = [storyboard instantiateInitialViewController];
tabController.configuration = self.configuration;
self.configuration.notificationDisplay = tabController;
viewController = tabController;
}
else {
storyboard = [UIStoryboard storyboardWithName:WELCOME_STORYBOARD_NAME bundle:nil];
CWNWelcomeController *welcomeController = [storyboard instantiateInitialViewController];
welcomeController.configuration = self.configuration;
viewController = welcomeController;
}
[self.window performSelectorOnMainThread:@selector(setRootViewController:) withObject:viewController waitUntilDone:YES];
}
上面的代碼是使用稱爲(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self showInterface];
[self.window makeKeyAndVisible];
也許你可以試試以後使用一個storyboard並修改tabbar的viewcontrollers。NSMutableArray * vcs = [NSMutableArray arrayWithArray:[self.tabBarController viewControllers]]; \t [vcs removeObjectAtIndex:2]; \t [self.tabBarController setViewControllers:vcs]; – sissichen
顯示一些代碼。這種問題聽起來像是一個可能的線程問題... – matt
感謝您的興趣!我剛更新了這個問題。 – alonsovb