我遇到了问题。我有一个类将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
类不同的类中使用这些行。
谢谢:)
答案 0 :(得分:1)
每当您致电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()
如您所见,您需要在同一个对象上调用方法。