无法从它的超级视图中删除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
类。
谢谢:)
答
每次通话时间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
它的工作原理,谢谢:)。 –
你可以尝试打印print(“addNoDataLabel Executed”)到你的addNoDataLabel方法并检查它被调用了多少次? 我很确定你多次调用addNoDataLabel –
为什么你使用** self。** ...? – Fattie
只能调用一次:/ –