クラスで
@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)に移動する必要があります。お互いをカバーする多くのビューは良い変形ではないと思います。何が問題ですか?