Ios ui按钮点击崩溃应用程序
我在Ios ui按钮点击崩溃应用程序,ios,iphone,ipad,uibutton,catransition,Ios,Iphone,Ipad,Uibutton,Catransition,我在第1页上有一个按钮当我点击按钮时,我正在执行一些动画并导航到新的页面,比如说第2页 在第2页上,当我点击时,有一个取消按钮,我想返回到上一页,即第1页,但点击取消按钮,我的应用程序崩溃 这是我在第1页上的示例代码:页面CRViewController的名称 - (IBAction)ClickMe:(id)sender { RegistraionViewController *secondController = [[RegistraionViewController alloc] i
第1页上有一个按钮
当我点击按钮时,我正在执行一些动画并导航到新的页面,比如说第2页
在第2页
上,当我点击时,有一个取消按钮,我想返回到上一页,即第1页
,但点击取消按钮,我的应用程序崩溃
这是我在第1页上的示例代码:
页面CRViewController的名称
- (IBAction)ClickMe:(id)sender {
RegistraionViewController *secondController = [[RegistraionViewController alloc] init];
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:@"push"];
[transitionAnimation setSubtype:kCATransitionFromBottom];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFromBottom];
[self.view addSubview:secondController.view];
}
第2页上的代码:
页面注册ViewController的名称(单击该名称会崩溃)
试试这个:
- (IBAction)ClickMe:(id)sender {
RegistraionViewController *secondController = [[RegistraionViewController alloc] init];
[self.navigationController pushViewController:secondController animated:YES];
}
- (IBAction) Click:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction)ClickMe:(id)sender {
RegistraionViewController *secondController = [[RegistraionViewController alloc] init];
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:@"push"];
[transitionAnimation setSubtype:kCATransitionFromBottom];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[self.navigationController.view.layer addAnimation:transitionAnimation forKey:nil];
[self.navigationController pushViewController:secondController animated:NO];
}
- (IBAction)Click:(id)sender {
CRViewController *secondController = [[CRViewController alloc] init];
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:@"push"];
[transitionAnimation setSubtype:kCATransitionFromTop];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[self.navigationController.view.layer addAnimation:transitionAnimation forKey:nil];
[self.navigationController popToViewController:secondController animated:NO];
}
编辑:我很抱歉。如果您想要自定义一些UIViewController转换动画,请参见以下内容:
或者您可以尝试以下方法:
- (IBAction)ClickMe:(id)sender {
RegistraionViewController *secondController = [[RegistraionViewController alloc] init];
[self.navigationController pushViewController:secondController animated:YES];
}
- (IBAction) Click:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction)ClickMe:(id)sender {
RegistraionViewController *secondController = [[RegistraionViewController alloc] init];
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:@"push"];
[transitionAnimation setSubtype:kCATransitionFromBottom];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[self.navigationController.view.layer addAnimation:transitionAnimation forKey:nil];
[self.navigationController pushViewController:secondController animated:NO];
}
- (IBAction)Click:(id)sender {
CRViewController *secondController = [[CRViewController alloc] init];
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:@"push"];
[transitionAnimation setSubtype:kCATransitionFromTop];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[self.navigationController.view.layer addAnimation:transitionAnimation forKey:nil];
[self.navigationController popToViewController:secondController animated:NO];
}
由于子视图,您的问题存在于某个地方。我已经试过你的代码了 我在我的项目中用一些动画编写了以下代码,希望对您有所帮助
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[animation setDuration:0.8];
[animation setType:kCATransitionFade];
[animation setSubtype:kCATransitionMoveIn];
//[[self.view layer]addAnimation:animation forKey:@"fview"];
[self.navigationController.view.layer addAnimation:animation forKey:nil];
[self.navigationController pushViewController:yourView animated:NO];
在“动画类型”中,可以提供所需的任何动画
希望这对你有帮助。*
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[animation setDuration:0.8];
[animation setType:kCATransitionFade];
[animation setSubtype:kCATransitionMoveIn];
//[[self.view layer]addAnimation:animation forKey:@"fview"];
[self.navigationController.view.layer addAnimation:animation forKey:nil];
[self.navigationController pushViewController:yourView animated:NO];
- (IBAction)ClickMe:(id)sender {
RegistraionViewController *secondController = [[RegistraionViewController alloc] init];
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:@"push"];
[transitionAnimation setSubtype:kCATransitionFromBottom];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFromBottom];
[self addChildViewController:secondController];
[self.view addSubview:secondController.view];
}
*
将第1页上的示例代码替换为上述代码,然后进行检查
希望这对您有所帮助当应用程序崩溃时,是否有任何错误消息?@Krunal:显示如何创建取消按钮。不,它在我的日志中仅显示
lldb
,尝试在按钮操作中设置断点。然后逐行执行它,看看它在哪一行崩溃。@Krunal:[self.view addSubview:secondController.view];而不是使用[self-presentViewController:secondController animated:YES];我想要一些动画。不推和popI已经尝试了这个代码,它的工作。您应该确保控制器层次结构中有navigationController。动画出现,但动画加载后会加载相同的文件。下面是我的代码:所有文件都在您的提供项目中丢失。无法查看动画:(我现在正在我的项目中运行此代码,伙计。请检查是否在其中传递了正确的视图名称。在代码中,如果推送视图而不是子视图,则会显示动画。RegistrationViewController*secondController=[[RegistrationViewController alloc]init];CATTransition*animation=[CATTransition animation];[animation setDelegate:self];[animation SetTiming Function:[Camediatiming Function With Name:KCAMediatiming FunctionLinear];[animation setDuration:0.8];[animation setType:kCATransitionFade];[animation setSubtype:kCATransitionMoveIn];[self.navigationController.view.layer addAnimation:animation forKey:nil];[self.navigationController pushViewController:secondController animated:NO];
我尝试了上面的代码,动画出现,但在动画之后它加载了相同的文件。然后检查是否要将视图传递到要复制的视图。并且不要对不同视图控制器的对象使用相同的名称。