Выберите вторую вкладку из ModalViewController

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

Мой AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{    
    //-- Insert a delay of 5 seconds before the splash screen disappears
    [NSThread sleepForTimeInterval:3.0];        

    // Set the tab bar controller as the window's root view controller and display.
    self.window.rootViewController = self.tabBarController;

    // Set StartView to load first
    StartViewController *startViewController = [[StartViewController alloc] initWithNibName:@"StartView" bundle: nil];
    [window addSubview: [startViewController view]];
    [window makeKeyAndVisible];

    [self.tabBarController presentModalViewController:startViewController animated:NO];
    [startViewController release];

    return YES;
}

А вот мой текущий IBAction, который, похоже, не работает:

 - (IBAction) toSecondView:(id)sender
    {
    // Show status bar
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

    [(UITabBarController *)self.parentViewController setSelectedIndex:1];

    [self dismissModalViewControllerAnimated:NO];
}

Я тоже пробовал это, но безуспешно:

self.tabBarController.selectedIndex = 1;  

а также

[self.tabBarController setSelectedIndex:1];

Может ли кто-нибудь помочь мне и объяснить мне, что мне не хватает?


person user1227927    schedule 23.02.2012    source источник
comment
это произошло из-за того, что вы добавили контроллер представления в окно как subView, а затем представили этот контроллер представления на tabBarController   -  person Kamar Shad    schedule 27.02.2012


Ответы (1)


Это произошло из-за отсутствия разума.

Вы добавили ViewController в окно в качестве подпредставления, нет необходимости добавлять подпредставление, потому что вы уже представляете этот ViewController как ModalViewController.

Пожалуйста, попробуйте, как показано ниже.

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    
//-- Insert a delay of 5 seconds before the splash screen disappears
[NSThread sleepForTimeInterval:3.0];        

// Set the tab bar controller as the window's root view controller and display.
self.window.rootViewController = self.tabBarController;

// Set StartView to load first
StartViewController *startViewController = [[StartViewController alloc] initWithNibName:@"StartView" bundle: nil];
//[window addSubview: [startViewController view]]; no need to add subView here
[window makeKeyAndVisible];

[self.tabBarController presentModalViewController:startViewController animated:NO];
[startViewController release];
return YES;

}

-(IBAction) toSecondView:(id)sender
{
// Show status bar
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
//create delegate's class object for accessing tabBarController
 AppDelegate* delegate=(AppDelegate*)[[UIApplication sharedApplication]delegate];
 //instead of [(UITabBarController *)self.parentViewController setSelectedIndex:1];
 //delegate.tabBarController your tabBarControler at which you have added viewController
[delegate.tabBarController setSelectedIndex:1];

[self dismissModalViewControllerAnimated:NO];

}

person Kamar Shad    schedule 27.02.2012