簡體   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