[英]UIButton click crashes app
當我單擊按鈕時,我在page 1
上有按鈕,我正在執行一些動畫和導航到新頁面,例如Page 2
。
在page 2
有一個“取消”按鈕,當我單擊該按鈕時,我想回到我的上一頁,即Page 1
但是在單擊“取消”按鈕時,我的應用程序崩潰了。
這是我在Page 1:
頁上的示例代碼Page 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];
}
Page 2:
上的代碼Page 2:
頁面RegistraionViewController的名稱 (單擊時崩潰)。
- (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.view.layer addAnimation:transitionAnimation forKey:kCATransitionFromBottom];
[self.view addSubview:secondController.view];
}
嘗試這個:
- (IBAction)ClickMe:(id)sender {
RegistraionViewController *secondController = [[RegistraionViewController alloc] init];
[self.navigationController pushViewController:secondController animated:YES];
}
- (IBAction) Click:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
編輯:
對不起。 如果要自定義一些UIViewController過渡動畫,請參見以下內容:
UIViewController過渡-Objective-C
http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/
或者,您可以嘗試以下操作:
- (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];
在動畫類型中,您可以提供所需的任何動畫。
希望對您有幫助。
*
- (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頁上的示例代碼,然后檢查。
希望這對您有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.