ビューを持つ2つのView Controllerがあります。1 つ目はログイン画面で、2 つ目は Web から情報を取得します (関係ありません)。
私はカスタムセグエアニメーションを使用し、スーパービューで奇妙なことをして、sourceViewController.viewをdestinationViewController.viewの(視覚的に)「上」にする必要がありました
これが、2 番目のビューから IBAction メソッドを呼び出そうとすると呼び出されない理由であるとしか思えません。
セグエ クラスの実装は次のとおりです。
- (void) perform {
UIViewController *sourceViewController = (UIViewController *) self.sourceViewController;
UIViewController *destinationViewController = (UIViewController *) self.destinationViewController;
UIView *parent = sourceViewController.view.superview;
[sourceViewController.view removeFromSuperview];
[parent addSubview: destinationViewController.view];
[parent addSubview:sourceViewController.view];
sourceViewController.view.layer.masksToBounds = NO;
sourceViewController.view.layer.cornerRadius = 8; // if you like rounded corners
sourceViewController.view.layer.shadowOffset = CGSizeMake(0,0);
sourceViewController.view.layer.shadowRadius = 10;
sourceViewController.view.layer.shadowOpacity = 1;
destinationViewController.view.frame = CGRectMake(0, 20, destinationViewController.view.frame.size.width, destinationViewController.view.frame.size.height);
sourceViewController.view.frame = CGRectMake(0, 20, sourceViewController.view.frame.size.width, sourceViewController.view.frame.size.height);
[UIView animateWithDuration:.6
delay:0.0
options:UIViewAnimationCurveEaseInOut
animations:^{
sourceViewController.view.frame = CGRectMake(-sourceViewController.view.frame.size.width-10, 20, sourceViewController.view.frame.size.width, sourceViewController.view.frame.size.height);
}
completion:^(BOOL finished){
//[destinationViewController.view removeFromSuperview];
[sourceViewController.navigationController pushViewController:destinationViewController animated:NO];
}];
}
私の質問は、スーパービューからソース ビューを削除して、2 番目のビューで IBActions が呼び出される方法を台無しにすることはできますか?
IBAction メソッドは、たとえばボタンを押したときにアプリをクラッシュさせるだけです。