2015-01-25 4 views
0

У меня возникли проблемы с приложением моего приложения для правильного запуска правильного View Controller при загрузке. У меня есть начальный контроллер представления, расположенный внутри main.Storyboard со стрелкой. Однако часть моего приложения поддерживает чат. Внутри моего файла AppDelegate.M под didfinishLaunchingWithOptions у меня есть это кодирование:Проблемы с делегацией начального вида приложений

//--------------------------------------------------------------------------------------------------------------------------------------------- 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    self.groupView = [[GroupView alloc] init]; 
    self.privateView = [[PrivateView alloc] init]; 
    self.messagesView = [[MessagesView alloc] init]; 
    self.profileView = [[ProfileView alloc] init]; 

    NavigationController *navController1 = [[NavigationController alloc] initWithRootViewController:self.groupView]; 
    NavigationController *navController2 = [[NavigationController alloc] initWithRootViewController:self.privateView]; 
    NavigationController *navController3 = [[NavigationController alloc] initWithRootViewController:self.messagesView]; 
    NavigationController *navController4 = [[NavigationController alloc] initWithRootViewController:self.profileView]; 

    self.tabBarController = [[UITabBarController alloc] init]; 
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController1, navController2, navController3, navController4, nil]; 
    self.tabBarController.tabBar.translucent = NO; 
    self.tabBarController.selectedIndex = DEFAULT_TAB; 

    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    //--------------------------------------------------------------------------------------------------------------------------------------------- 
    return YES; 
} 

Я предполагаю, что я слишком много нуб, чтобы точно знать, как это исправить ... но позвольте мне объяснить немного лучше, что происходит на. Мой чат был выполнен в XIB, а остальная часть моего приложения была выполнена на интерфейсе StoryBoards. ViewController, что я хочу, чтобы люди видели, называется CRViewController и подключен к tabBarController (который я не назвал), что вид выглядит следующим образом: Main Menu

Из-за мой AppDelegate кодирования мнения, что выскакивает вместо называется WelcomeView, а также панель управления tabbar. (Примечание: tabBarController для этого вида представлен после входа пользователя в систему), что взгляд выглядит следующим образом: Chat Welcome Screen

Мой вопрос заключается в следующем: Что я должен изменить, чтобы показать свою CRViewController на загрузке? Также есть способ добавить навигацию из моей панели навигации XIB в чат обратно в мой CRViewController, который также представит мой CRViewController с помощью главного меню TabBar? Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать! Спасибо!

+1

код у вас есть в приложении делегат отменяет первоначальный контроллер представления, которые вы установили в раскадровке. Если вы не хотите, чтобы это произошло, переместите этот код на один из ваших контроллеров (который когда-либо один является контроллером, который вы хотите видеть перед контроллером панели вкладок). – rdelmar

+0

Итак, я бы хотел перенести это с моего AppDelegate.m на WelcomeView.m, однако в AppDelegate этот код находится под dofinishlaunchingwithoptions, где я бы разместил эту кодировку внутри моего файла Welcome.m? –

+0

Ты был прав @rdelmar. Мне пришлось поместить кодировку в свой первый контроллер представления. В частности, в моем IBAction, который будет отображать представление чата. Спасибо! Если вы сделаете это, я отметю его. –

ответ

0

Для установки CRViewController в качестве начального контроллера. Вы должны изменить ваш didfinishLaunchingWithOptions как:

CRViewController *crv = [[CRViewController alloc] init]; 
self.window.rootViewController = crv; 

Или в раскадровку дать Id раскадровки и изменить приведенный выше код, как:

CRViewController *crv = (CRViewController *)[[UIStoryboard storyboardWithName:@"YourStoryboardName" bundle: nil] instantiateViewControllerWithIdentifier:@"YourCRVId"]; 
self.window.rootViewController = crv; 
+0

Спасибо, я пробовал это вчера, и по какой-то причине это представляет мне черный экран. –

+0

@DiplomaticMedic: Проверьте добавлен ли этот класс в ViewController в раскадровке/XIB –

+0

[ссылка] http://s12.postimg.org/l5htv59xp/Screen_Shot_2015_01_25_at_11_13_41_AM.png [ссылка] –

0

Set CRViewController в качестве исходного RootViewController.

CRViewController *crv = [[CRViewController alloc] init]; 
self.window.rootViewController = crv; 

После успешного входа в систему просто измените rootViewCOntroller вашего приложения.

if(loggedIn) { 
    //Change the rootViewController 
} 

Надеется, что это помогает .. :)

Смежные вопросы