presentmodalviewcontroller не работает должным образом в приложении делегата в iPhone - PullRequest
0 голосов
/ 12 мая 2010

Я использую два UIViewController в Application Delegate и перехожу к UIViewController с использованием presentmodalviewcontroller. Но проблема в том, что presentmodalviewcontroller впервые работает UIViewController, и когда я хочу перейти ко второму UIViewController, используя presentmodalviewcontroller, тогда он показывает первый UIViewController. Ниже приведен код: -

-(void)removeTabBar:(NSString *)str
{
    HelpViewController *hvc =[[HelpViewController alloc] initWithNibName:@"HelpViewController" bundle:[NSBundle mainBundle]];
    VideoPlaylistViewController *vpvc =[[VideoPlaylistViewController alloc] initWithNibName:@"VideoPlaylistViewController" bundle:[NSBundle mainBundle]];
    if ([str isEqualToString:@"Help"])
    {
        [tabBarController.view removeFromSuperview];
        [vpvc dismissModalViewControllerAnimated:YES];
        [viewController presentModalViewController:hvc animated:YES];
        [hvc release];
    }
    if ([str isEqualToString:@"VideoPlaylist"])
    {
        [hvc dismissModalViewControllerAnimated:YES];
        [viewController presentModalViewController:vpvc animated:YES];
        [vpvc release];
    }
}

Может кто-нибудь помочь мне в решении проблемы?

1 Ответ

0 голосов
/ 12 мая 2010

Вы создаете новые hvc и vpvc каждый раз, когда запускаете эту функцию.

В первый раз, я предполагаю, что вы звоните removeTabBar:@"Help", он набирает hvc и vpvc, а затем показывает правильный.

Во второй раз, когда вы называете это removeTabBar:@"VideoPlayList", вы создаете новые hvc и vpvc. Это означает, что когда вы звоните hvc dismissModalViewController:YES];, вы не удаляете тот, который добавили ранее, вы удаляете только что созданный вами, который вообще не отображается!

Чтобы решить эту проблему, вам нужно сделать два контроллера в качестве свойств в вашем приложении делегатом и создать их в методе applicationDidFinishLaunching.

Добавьте их в .h файл вашего приложения:

@class MyAppDelegate {
    HelpViewController *hvc;
    VideoPlaylistViewController *vpvc;
}

@property (nonatomic, retain) HelpViewController *hvc;
@property (nonatomic, retain) VideoPlaylistViewController *vpvc;

@end

и в файле .m делегата вашего приложения:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    ...
    self.hvc = [[[HelpViewController alloc] initWithNibName:@"HelpViewController" bundle:nil] autorelease];
    self.vpvc = [[[VideoPlaylistViewController alloc] initWithNibName:@"VideoPlaylistViewController" bundle:nil] autorelease];
    ...
}

и удалите первые две строки в removeTabBar

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