Problem with pushViewController! Help

tabBarController = [[UITabBarController alloc] init]; //Create a tab bar view1 = [[View1 alloc] init]; //Create the first view UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:view1]; navigationController1.navigationBar.tintColor =[UIColor blackColor]; view2 = [[View2 alloc] init]; //create the second view UINavigationController *navigationController2 = [[UINavigationController alloc] initWithRootViewController:view2]; navigationController2.navigationBar.tintColor =[UIColor blackColor]; tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController1, navigationController2,nil]; [window addSubview:tabBarController.view]; [window makeKeyAndVisible]; 

The code above belongs to the class appDelegate (applicationDidFinishLaunching). View1 and View2 are UIViewController. This is how I originally developed my applications, that applications have two tabs (view1 and view2). The code below implements what happens in View1 when the user scrolls left or right.

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"I am in touches began methods"); UITouch *touch = [touches anyObject]; gestureStartPoint = [touch locationInView:self.view]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint currentPosition = [touch locationInView:self.view]; CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x); CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y); if (deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) { //Set Animation Properties [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration: 1]; if(gestureStartPoint.x > currentPosition.x){ //I am trying to move right ViewControllerTemplate *newView = [[ViewControllerTemplate alloc] initWithNibName:@"ViewControllerTemplate" bundle:nil]; //Transition spin right [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; //Push OnTo NavigationController [self.navigationController pushViewController:newView animated:YES]; } else { //I am trying to move left if([viewDelegate getCurrentViewID] > 0){ //At view 0, should not pop anymore view //Transition Spin left [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; [self.navigationController popViewControllerAnimated:YES]; } } [UIView commitAnimations]; } } 

To a large extent, this means that when the user sits to the right, he creates a new view (ViewControllerTemplate) and pushViewController, and when the user scrolls to the left, popViewController. However, since I changed my mind and don’t want to implement the tab bar. So I change my code in applicationDidFinishLaunching in appDelegate to the ones below and pushViewController in touchhesMoved in View1.m stops working. I am sure it gets there, but when it is pushViewController from newView, nothing happens. I feel that when I pulled out the UINavigationController, my look no longer pushed the stack. Any idea why and how to fix it.

 view1 = [[View1 alloc] init]; [window addSubview:View1.view]; 
0
source share
1 answer

If anyone encounters the same problem, here is the solution Replace what I have for applicationDidFinishLaunching (), before that

 view1 = [[View1 alloc] initWithNibName:@"View1" bundle:nil]; //Create the first view UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:view1]; navigationController1.navigationBar.tintColor =[UIColor blackColor]; view1 = navigationController1; [window addSubview:view1.view]; [window makeKeyAndVisible]; 
+1
source

Source: https://habr.com/ru/post/1301538/


All Articles