クラスで
@interface StartScene : UIView
私はのインスタンスを呼び出します
@interface HelpView : UIView {
GameOverMenu* gorm;
PlayScene* tView;
}
を使用しますaddSubview。ここにも巨大なコードがあります
-(void) removemyself {
[tView removeFromSuperview];
[gorm removeFromSuperview];
[self removeFromSuperview];
}
-(void)restartPlay {
[tView removeFromSuperview];
[self playSceneDidLoad];
}
-(void)gameOverDidLoad {
[tView removeFromSuperview];
gorm = [[GameOverMenu alloc]initWithFrame:CGRectMake(0, 0, 320, 520)];
gorm.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backGround.jpg"]];
[gorm checkScore:Scores];
[self addSubview:gorm];
}
-(void)playSceneDidLoad {
[gorm removeFromSuperview];
tView = [[PlayScene alloc]initWithFrame:CGRectMake(0, 0, 320, 520)];
tView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backGround.jpg"]];
[self addSubview:tView];
[tView ooneFingerTwoTaps];
}
そしての2つのサブクラスHelpView:
@interface PlayScene : HelpView
@interface GameOverMenu : HelpView <UITextFieldDelegate>
StartSceneボタンを押すと、のインスタンスがHelpView作成され、initメソッドplaySceneDidLoadが呼び出されます。
内部には、メソッドPlaySceneを呼び出す再起動ボタンがあります。restartPlayゲームが負けたときにgameOverDidLoadメソッドが呼び出されます。
そして両方PlaySceneに、プレーヤーをメインメニューに戻すことになっているメソッドGameOverMenuを呼び出す終了ボタンがあります。removemyself
一見正常に動作するはずですが、再起動ボタンを数回押して終了を押してみると、ビューがスーパービューから削除されなかった場合、終了ボタンを1回押すと1つずつ削除されるようになりました。[super removeFromSuperview];そして、HelpViewで停止しますが、それ自体は削除されませんでした(どこかで呼び出そうとしても) 。
時間内にビューを正しく削除し、終了を押したときにメインメニュー(StartScene)に移動する必要があります。お互いをカバーする多くのビューは良い変形ではないと思います。何が問題ですか?