私は問題に直面しています。他のビューに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)
しかし、ここでは私の問題を来て、このため、行は何もしません:"Executed"
を印刷しても、
noDataColor().removeNoDataLabelColor()
私の質問はです。代理人を使用せずにerrLabelを削除するにはどうしたらいいですか?
注:私はこれらの行をnoDataColor
クラスとは異なるクラスで使用します。
ありがとうございました:)
print( "addNoDataLabel Executed")をaddNoDataLabelメソッドに印刷し、呼び出した回数を確認できますか? 私はかなりあなたがaddNoDataLabelを複数回呼び出すと確信しています –
なぜあなたは**自己を使用していますか?** ...? – Fattie
一度だけ呼び出されます:/ –