簡體   English   中英

removeFromSuperview不起作用

[英]removeFromSuperview doesn't work

我需要能夠從視圖中刪除一個按鈕並添加另一個按鈕。 我的代碼看起來像這樣:

-(void)UpdatePromoBanner:(NSString*)value{
    [button setTitle:@"newer text" forState:UIControlStateNormal];
    for (UIView *subView in emptyViewController.view.subviews)
    {
        if(subView.tag == 99) {
            //--remove button and add an updated one
            NSLog(@"Remove button?");
            [subView removeFromSuperview];
            //[subView.superview addSubview:button];
        }
    }
    NSLog(@"event called");

}

-(void)AddPromoBannerToBottom:(UIView*)view {

    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button addTarget:self 
               action:@selector(aMethod:)
     forControlEvents:UIControlEventTouchDown];
    [button setTitle:lblForBannerButton forState:UIControlStateNormal];
    button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
    button.tag = 99;

    [view addSubview:button];
}

emptyViewController只是一個普通的空視圖控制器。 我正在中間添加一個按鈕。 我點擊NSLog ok檢查標簽,但視圖沒有被刪除。 我應該提到我正在使用一個每隔5秒觸發updatepromobanner的線程。

奧斯卡是對的。 您必須更新主線程上的接口。 想我會添加一些代碼來幫助。

更換:

[subView removeFromSuperview];

附:

[subView performSelectorOnMainThread:@selector(removeFromSuperview) withObject:nil waitUntilDone:NO];

我認為如果不改變其他任何事情,你應該好好去。

您無法使用輔助線程更新UI,每當您的線程進行UI更新時,您必須調用主線程。

dispatch_async(dispatch_get_main_queue(), ^{
         [subView removeFromSuperview];
});

記得在主線程中更新UI :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM