0

アプリで 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 ステートメントを使用する必要がありますか (そうであれば、どうすればよいですか)?

4

1 に答える 1