Вопрос о контроллере UITabBar - PullRequest
0 голосов
/ 14 февраля 2011

Здравствуйте, я совершенно новичок в iPhone SDK. Я пытаюсь создать приложение, которое показывает экран приветствия в течение 3 секунд, а затем переключается на основной экран приложения, который имеет вид панели вкладок. Мой экран приветствия работает нормально при тестировании в изоляции. Но после настройки UITabBarController в main.xib экран приветствия не отображается. Хотя панель вкладок работает нормально.

Контроллер для экрана приветствия, который я назвал rootController. В AppDeligate у меня есть следующий код -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    //  Override point for customization after application launch.    

    RootController* rootController = [[RootController alloc] init];
    //  [self.window insertSubview:rootController.view atIndex:4];
    [self.window addSubview:rootController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

После показа экрана приветствия я удалю его вид и ожидаю, что будет показан основной вид, состоящий из панели вкладок. В чем может быть возможная ошибка?

Ответы [ 3 ]

0 голосов
/ 17 февраля 2011

Самый простой способ: добавить контроллер приветствия и контроллер панели вкладок в файл mainwindow.xib, создать для них выходы и связать их.

Тогда просто покажите им оба:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    [window addSubview:tabBarController.view];
    [window addSubview:welcomeViewController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

В вашем welcomeViewController вы можете установить его вид скрытым через 3 секунды, удалить себя из окна и т. Д.

0 голосов
/ 22 февраля 2011

Я решил проблему очень аккуратно. Я использовал presentModalViewController:animated: и отказался от метода timerDidRan:. Хотя я вложил в подкласс UIViewController, а не UITabBarcontroller, что мне кажется более правильным.

0 голосов
/ 14 февраля 2011

Я полагаю, что представление контроллера панели вкладок загружается после возврата из метода applicationDidFinishLaunching ..., поэтому он будет добавлен в окно приложения ПОСЛЕ того, как вы добавили представление RootController, которое теперь находится под представлением панели вкладок.

Может быть несколько способов достичь того, что вы хотите, но я бы представил модальный вид приветствия в методе viewDidLoad в контроллере панели вкладок. Хотя для этого вам нужно создать подкласс класса контроллера представления панели вкладок, код будет наиболее простым для понимания.

Подкласс UITabBarController, используйте его в nib-файле, переопределите viewDidLoad и сделайте что-то вроде

[super viewDidLoad]; // создаем объект RootController [self presentModalViewController: анимированный welcomeViewController: НЕТ];

Вы будете отклонять модальное представление, когда захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...