无法从它的超级视图中删除UILabel

无法从它的超级视图中删除UILabel

问题描述:

我正面临一个问题。我有一个课程,将UILabel添加到其他视图。无法从它的超级视图中删除UILabel

这就是类:

class noDataColor{ 

     let errLabel = UILabel() 

     func addNoDataLabel(_ tableView:UITableView, text:String, color: UIColor){ 

     //Err label 

     self.errLabel.frame = CGRect(x: 15, y: 20, width: tableView.bounds.width, height: 60) 
     self.errLabel.textColor = color 
     self.errLabel.text = text 
     self.errLabel.isHidden = false 
     tableView.addSubview(self.errLabel) 
     print("errLabelFrame\(errLabel.frame)") //Prints normal frame 
} 

    func removeNoDataLabelColor(){ 
     //Err label 
      print("Executed") 
      errLabel.isHidden = true 
      errLabel.removeFromSuperview() 
      errLabel.textColor = UIColor.clear 
      print("errLabelFrame\(errLabel.frame)") //Prints (0.0,0.0,0.0,0.0) 
     } 
    } 

然后,我添加使用这一行(一切正常,并加入我的标签)我errLabel:

noDataColor().addNoDataLabel(self.tableView, text: errorMessage!, color: .white) 

但是这才是我的问题,因为这线路什么也不做:

noDataColor().removeNoDataLabelColor() 

,即使它打印"Executed"

我的问题是:如何删除我的errLabel而不使用委托。

注:我使用这些行在不同的类比noDataColor类。

谢谢:)

+1

你可以尝试打印print(“addNoDataLabel Executed”)到你的addNoDataLabel方法并检查它被调用了多少次? 我很确定你多次调用addNoDataLabel –

+0

为什么你使用** self。** ...? – Fattie

+0

只能调用一次:/ –

每次通话时间noDataColor()您创建类的新实例。

noDataColor().addNoDataLabel(self.tableView, text: errorMessage!, color: .white) 
noDataColor().removeNoDataLabelColor() 

第二行创建了noDataColor这从未有过它的addNoDataLabel(_, text:, color:)所谓的新实例。你需要保留一个类的参考:

let noDataColor = noDataColor() 
noDataColor.addNoDataLabel(self.tableView, text: errorMessage!, color: .white) 
noDataColor.removeNoDataLabelColor() 

正如你所看到的,你需要调用同一个对象的方法。

+0

它的工作原理,谢谢:)。 –