繁体   English   中英

removeFromSuperview无法正常工作

[英]removeFromSuperview doesn't work properly

在班上

@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实例,并在init方法中调用playSceneDidLoad

PlayScene内部,有重新启动按钮,该按钮调用restartPlay方法。 当游戏丢失时,将调用gameOverDidLoad方法。

而且在PlaySceneGameOverMenu中都有退出按钮,该按钮调用removemyself方法,该按钮应该使玩家返回主菜单。

乍一看,它应该可以正常工作,但是如果我按了几次“重启”按钮,而不是尝试按“退出”,就会出现视图没有从超级视图中删除的情况,一按退出按钮,现在只能一一删除它们。 而且我们停在HelpView上,它并没有将其自身删除(即使我尝试在某处调用[super removeFromSuperview];

我需要及时正确地删除视图,并在按quit时进入主菜单(StartScene)。 我认为,很多相互覆盖的观点不是很好的选择。 问题是什么?

好吧,我的意思是,如果从子类中调用超类的方法,并且有这样的命令[self removeFromSuperview]; [(someOtherSubview) removeFromSuperview]; ,它是使用self或(someOtherSubview)的子类。 如果我们的子类没有指向的subView,则该命令将不执行任何操作。 如果有[self removeFromSubview]; ,子类会自行删除。

实际上,我通过使用按钮作为超类的子视图解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM