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];
上面的代码来自我的appDelegate类(applicationDidFinishLaunching)。 View1和View2是UIViewController。这是我最初设计我的应用程序的方式,这些应用程序有两个选项卡(view1和view2)。下面的代码实现View1中发生的事情,当用户向左或向右滑动时。与pushViewController有问题!帮助
- (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];
}
}
差不多,它只是说,当用户刷卡的权利,它创建一个新的视图(ViewControllerTemplate)和pushViewController,当离开用户刷卡,popViewController。但是,因为我改变了主意,不想实现标签栏。因此,我将appDlegate中的applicationDidFinishLaunching中的代码更改为下面的代码,并在View1.m中的touchesMoved中的pushViewController停止工作。我确信它到达那里,但是当它pushViewController的newView时,什么都不会发生。我感觉当我拿出UINavigationController时,我的视图不再适当地推入堆栈。任何想法,为什么,以及如何解决它
view1 = [[View1 alloc] init];
[window addSubview:View1.view];
你任何机会都知道如何将数据推送到UITouch上的另一个视图,就像以前一样。就像我们在didlectlectrowrowdexpath上做的那样。 – lifemoveson