Domanda

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

Il codice sopra proviene dalla mia classe appDelegate (applicationDidFinishLaunching).View1 e View2 sono UIViewController.Questo è il modo in cui progetto originariamente le mie app, ovvero che le app hanno due schede (visualizzazione1 e visualizzazione2).Il codice seguente implementa ciò che accade in View1, quando l'utente scorre verso sinistra o verso destra.

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

Praticamente, dice solo che quando l'utente scorre verso destra, crea una nuova vista (ViewControllerTemplate) e pushViewController e quando l'utente scorre verso sinistra, popViewController.Tuttavia, dal momento che ho cambiato idea e non voglio implementare la barra delle schede.Quindi cambio il mio codice in applicationDidFinishLaunching in appDelegate a questi di seguito e pushViewController in touchMoved in View1.m smette di funzionare.Sono sicuro che arrivi lì, ma quando pushViewController di newView, non succede nulla.Mi sento come se quando ho eliminato UINavigationController, la mia visualizzazione non veniva più inserita correttamente nello stack.Qualche idea sul perché e su come risolverlo

view1 = [[View1 alloc] init];
[window addSubview:View1.view];
È stato utile?

Soluzione

Se qualcuno ha mai incontrato lo stesso problema, ecco la soluzione sostituire ciò che ho per applicationDidFinishLaunching () lì per questo

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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top