2012-04-26 4 views
1

В классеremoveFromSuperview не работает должным образом

@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]; 
} 

И два суб классы HelpView:

@interface PlayScene : HelpView 

@interface GameOverMenu : HelpView <UITextFieldDelegate> 

В StartScene когда я нажимаю на кнопку, экземпляр HelpView создан и в методе инициализации playSceneDidLoad называется.

Внутри PlayScene есть кнопка перезапуска, которая вызывает метод restartPlay. Когда игра проигрывается, вызывается метод gameOverDidLoad.

И в обоих PlayScene и GameOverMenu есть кнопка выхода, которая вызывает метод removemyself, который должен вернуть игрока в главное меню.

На первый взгляд он должен работать нормально, но если я нажму кнопку повторного запуска несколько раз и попытаюсь нажать кнопку «Выход», происходит, что просмотры не были удалены из супервизора, одно нажатие на кнопку выхода только теперь удаляет их один одним. И мы остановились на HelpView, она не устранила себя (даже если я пытаюсь вызвать [super removeFromSuperview]; где-нибудь.

мне нужно правильно удалить взгляды во времени и, чтобы добраться до главного меню (StartScene), когда бросить нажимается Я не думаю, что многие взгляды, окружающие друг друга, являются хорошим вариантом. В чем проблема?

ответ

0

Ну, я понимаю, что дело в том, что если метод суперкласса вызывается из подкласса, команда [self removeFromSuperview]; или [(someOtherSubview) removeFromSuperview];, это подкласс, который использует self или (someOtherSubview). Если наш подкласс не имеет остроконечного subView, чем команда ничего не сделает. И если есть [self removeFromSubview];, подкласс удалит сам.

На самом деле я решил эту проблему, используя кнопки в качестве подвид суперкласса.

Смежные вопросы