Выберите вторую вкладку из ModalViewController - PullRequest
1 голос
/ 23 февраля 2012

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

Мой 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];

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

1 Ответ

0 голосов
/ 27 февраля 2012

Это произошло из-за нижеприведенной причины.

Вы добавили ViewController в окно в качестве подпункта, нет необходимости добавлять SubView, поскольку вы уже представляете этот 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];

}

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