Question

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];

Le code ci-dessus sont de ma classe appDelegate (applicationDidFinishLaunching). View1 et View2 sont UIViewController. Voilà comment je Originellement mes applications, que les applications comporte deux onglets, (view1 et view2). Le code ci-dessous, mettre en œuvre ce qui se passe dans View1, lorsque le swipe utilisateur gauche ou à droite.

- (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];
}
}

A peu près, il de dire que lorsque le droit swipe utilisateur, il crée une nouvelle vue (ViewControllerTemplate) et pushViewController, et lorsque le swipe utilisateur gauche, popViewController. Cependant, étant donné que je change d'avis et ne veux pas mettre en œuvre la barre d'onglets. Donc, je change mon code dans applicationDidFinishLaunching dans appDelegate à ces ci-dessous et l'pushViewController en touchesMoved dans le travail d'arrêt View1.m. Je suis sûr qu'il y arriver, mais quand il pushViewController du NewView, rien ne se passe. Je me sens comme quand je pris le UINavigationController, mon avis ne sont pas pousser sur la pile plus correctement. Toute idée pourquoi, et comment y remédier

view1 = [[View1 alloc] init];
[window addSubview:View1.view];
Était-ce utile?

La solution

Si quelqu'un a déjà couru dans le même problème, voici la solution Remplacer ce que j'ai pour applicationDidFinishLaunching () là-bas à cette

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];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top