0
votes

Main screen in my app has 2 buttons. When click button 1, show ViewController1. When click button 2, show ViewController2. ViewController1 has 2 bar items. ViewController of each bar item has Back and Done button. Back is back to main menu, Done is used to hide keyboard. I want to control 2 these buttons. I have 2 directions:

  1. Add Navigation Controller at main screen. It has Back button. Button Done is implemented in ViewController of each bar item. In this case, button Done works not good when change tab bar. I loged and see that, first click in tab bar, it works correct, but click Item1->Item2->Item1, button Done in Item1 this time not correct, because it is still button Done in Item2 Controller. How to fix in this case?

  2. I hide Navigation Controller in main screen, implement Navigation Controller in Controller of each Tab Bar. In this case, button Done works good, but button Back can't move to main screen when click on it. How to move to main screen in this case?

Code in AppDelegate.m:

UIViewController *cont = [[VCMainMenu alloc]initWithNibName:@"VCMainMenu" bundle:nil];
self.navController = [[UINavigationController alloc]initWithRootViewController:cont];
[self.window setRootViewController:navController];

Code in MainMenu.m, ViewDidLoad:

self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                 style:UIBarButtonItemStylePlain
                                target:nil
                                action:nil];

Code in MainMenu.m, buttonClick:

self.navigationController.navigationBarHidden = YES;
[self.tab setSelectedIndex:0];
[self.navigationController pushViewController:self.tab animated:YES];

Button Done in each class:

UIBarButtonItem *btnDone = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(btnDonePressed:)];
self.navigationController.topViewController.navigationItem.rightBarButtonItem = btnDone;
btnDone.enabled = TRUE;
btnDone.style = UIBarButtonSystemItemDone;

Thanks.

2

2 Answers

0
votes

To hide the Keyboard you need to know which textView is firstResponder. You have to implement a dismisskeyboard method for each of your scenes.

Also, why are you coding all the navigation stuff? It would be much easier implementing them via storyboards and segues.

0
votes

I hide Navigation Controller in main screen, implement Navigation Controller in Controller of each Tab Bar. In this case, button Done works good, but button Back can't move to main screen when click on it. How to move to main screen in this case?

To do that, use

    [self.navigationController popViewControllerAnimated:YES];

And as a sidenote @Marcal has a point, I think it might be better if you use storyboards and segues