Iphone 视图不';切换视图时不会消失
我正在调用turnView方法,该方法必须获取dissapear menuView(当前)并可能显示adjustView。调用该方法时,将执行该方法,但不会出现错误,但不会切换视图,menuView将保留该方法,并返回到方法调用的下一行。如何解决?谢谢 来自menuView的电话:Iphone 视图不';切换视图时不会消失,iphone,objective-c,cocoa-touch,uitableview,Iphone,Objective C,Cocoa Touch,Uitableview,我正在调用turnView方法,该方法必须获取dissapear menuView(当前)并可能显示adjustView。调用该方法时,将执行该方法,但不会出现错误,但不会切换视图,menuView将保留该方法,并返回到方法调用的下一行。如何解决?谢谢 来自menuView的电话: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ab
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
aboutTabController * myObject = [[aboutTabController alloc] init];
if (indexPath.section == 1) {
switch (indexPath.row) {
case 0:
[myObject turnView];
break;
case 1:
//
break;
default:
break;}
}
}
方法在控制器上实现,为menuView类定义了menuController:
- (void) turnView
{
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
if (self.adjustController == nil)
{
adjustView *aController = [[adjustView alloc] initWithNibName:@"adjustView" bundle:nil];
self.adjustController = aController;
[aController release];
}
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
[self.menuController viewWillDisappear:YES];
[self.adjustController viewWillAppear:YES];
[self.menuController.view removeFromSuperview];
[self.view insertSubview:adjustController.view atIndex:0];
[self.menuController viewDidDisappear:YES];
[self.adjustController viewDidAppear:YES];
[UIView commitAnimations];
}
您的代码中存在一些主要的概念性问题,让我尝试逐一解决这些问题:
didSelectRowAtIndexPath:
无论选择哪一行,都将创建新的视图控制器。您应该只在需要时创建它。另外,if和switch语句非常复杂,难以阅读
调用委托方法
方法视图将出现:
视图消失:
等。这些方法用于捕捉这些事件,而不是自己调用它们。这在某些情况下可能有意义,但它们在动画块中绝对没有效果
带有块的动画,或使用内置动画
您应该使用新的块语法制作动画。然而,只要切换到下一个视图,您就可以使用苹果的官方API,而无需编写自己的动画
因此,
您可以通过调用[self dismissModalViewControllerAnimated:YES]
摆脱控制器,动画将自动转到另一个方向
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section==1 && indexPath.row==0) {
adjustView *aController = [[adjustView alloc] initWithNibName:@"adjustView" bundle:nil];
aController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:aController animated:YES];
[aController release];
}
}