Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ui按钮点击崩溃应用程序_Ios_Iphone_Ipad_Uibutton_Catransition - Fatal编程技术网

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];
我尝试了上面的代码,动画出现,但在动画之后它加载了相同的文件。然后检查是否要将视图传递到要复制的视图。并且不要对不同视图控制器的对象使用相同的名称。