objective-c - removeFromSuperview 不能正常工作

标签 objective-c ios view

在类里面

@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/

相关文章:

backbone.js - marionette.js 查看 onShow 与 onRender 之间的区别?

ios - 如何自动加载键盘(iOS SDK)?

sql-server - SQL Server 是否在复杂 View 中传播 WHERE 条件?

objective-c - iOS 比较数组和集合

java - J2ObjC:如何翻译自己的类型

ios - 使用谓词查找字符串值是否存在

ios - RESTful 服务响应未映射到对象 - RESTKit

ios - 如何在加号图标上快速添加一些 Action

ios - 在 UITableViewController 中处理多个计时器值?

objective-c - 从 NSMutableArray 中提取 NSDictionary