アプリで 3 つの画面から基本的な背景を変更しようとしています。これが私の.hファイルです。
#import <UIKit/UIKit.h>
@class BIDYellowViewController;
@class BIDBlueViewController;
@class BIDGreenViewController;
@interface BIDSwitchViewController : UIViewController
@property (strong, nonatomic) BIDYellowViewController *yellowViewController;
@property (strong, nonatomic) BIDBlueViewController *blueViewController;
@property (strong, nonatomic) BIDGreenViewController *greenViewController;
- (IBAction)switchViews:(id)sender;
@end
IBAction ボタンが押されると、スーパービューが 1 つの画面から次の画面に移動し、それらを回転させるループを継続する .m ファイルの私の方法を次に示します。
- (IBAction)switchViews:(id)sender {
//animations
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
//loads yellow
if (self.yellowViewController.view.superview == nil) {
if (self.yellowViewController == nil) {
self.yellowViewController = [[BIDYellowViewController alloc]initWithNibName:@"YellowView" bundle:nil];
}
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
//removes blue
[self.blueViewController.view removeFromSuperview];
[self.view insertSubview:self.yellowViewController.view atIndex:0];
//loads green
} else if(self.greenViewController.view.superview == nil){
if (self.greenViewController == nil) {
self.greenViewController = [[BIDGreenViewController alloc] initWithNibName:@"GreenView" bundle:nil];
}
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
//removes yellow
[self.yellowViewController.view removeFromSuperview];
[self.view insertSubview:self.greenViewController.view atIndex:0];
//loads blue
} else if(self.blueViewController.view.superview == nil){
if (self.blueViewController == nil) {
self.blueViewController = [[BIDBlueViewController alloc] initWithNibName:@"BlueView" bundle:nil];
}
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
//removes green
[self.greenViewController.view removeFromSuperview];
[self.view insertSubview:self.blueViewController.view atIndex:0];
}
[UIView commitAnimations];
}
私が抱えている問題は、最初のループで緑色の画面が 2 回繰り返され、その後続行され、適切に動作することです。何か不足していますか、それとも switch: case ステートメントを使用する必要がありますか (そうであれば、どうすればよいですか)?