gpt4 book ai didi

objective-c - removeFromSuperview 不能正常工作

转载 作者:行者123 更新时间:2023-11-28 17:34:10 25 4
gpt4 key购买 nike

在类里面

@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 方法。

并且在PlaySceneGameOverMenu 中都有退出按钮,它调用removemyself 方法,应该让玩家返回到主菜单.

乍一看它应该工作正常,但是如果我多次按下重启按钮而不是尝试按下退出,会发生 View 没有从 super View 中删除,按退出按钮现在只会删除它们一个一。我们停在 HelpView 上,它没有自行删除(即使我尝试在某处调用 [super removeFromSuperview];

我需要及时正确地删除 View ,并在按下退出时进入主菜单 (StartScene)。我不认为很多观点相互覆盖是一个很好的变体。有什么问题?

最佳答案

好吧,我发现重点是如果从子类调用父类(super class)的方法并且有这样的命令 [self removeFromSuperview];[(someOtherSubview) removeFromSuperview]; ,是子类使用了self或者(someOtherSubview)。如果我们的子类没有指向的 subview ,则该命令将不执行任何操作。如果存在 [self removeFromSubview];,子类将删除自身。

实际上我通过使用按钮作为父类(super class)的 subview 解决了这个问题。

关于objective-c - removeFromSuperview 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10337446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com