pushViewControllerに問題が!助けて
-
21-09-2019 - |
質問
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をして起こるものを実装しています。
- (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を去ったとき。私は私の心といけないを変更しかし、タブバーを実装したいです。私は下に、これらにappDelegateにapplicationDidFinishLaunchingで私のコードを変更し、View1.m停止作業中touchesMovedでpushViewControllerようにします。私は確かにそれはそこに着くことだが、それはnewViewのpushViewController、何も起こらなかったとき。私はUINavigationControllerを取ったとき、私の見解が適切にもうスタックにプッシュされていないような気がします。任意のアイデアなぜ、そしてどのようにそれを修正する
view1 = [[View1 alloc] init];
[window addSubview:View1.view];
解決
誰もがこれまでと同じ問題に遭遇した場合は、
、ここでのソリューションです applicationDidFinishLaunchingのために私が持っているものに置き換え()この
にそこまで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];
所属していません StackOverflow