私のviewWillAppear()でラベルを作成し、タグを付けます。別の条件が満たされると、ラベルを削除しようとしますが、なんらかの理由でそれが機能していないため、ラベルがまだ表示されています。私は私が作成していないよように私は0のデフォルトのタグを持つ新しいラベルを作成していたlabel = UILabel(frame: CGRect(x: 0, y: self.view.frame.height/3, width: self.view.frame.width, height: 100))
はlabel?.frame = CGRect(x: 0, y: self.view.frame.height/3, width: self.view.frame.width, height: 100)
にそれを変更し、このラインでは実現しませんでした...タグ付きのビューを見つけることができません
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
var label: UILabel?
// Add label if there are no recipes
if (recipeBook.recipesArr.count == 0) {
label = self.view.viewWithTag(123) as? UILabel
//label?.tag = 123 // arbitrary num
label = UILabel(frame: CGRect(x: 0, y: self.view.frame.height/3, width: self.view.frame.width, height: 100))
label?.text = "Add A Recipe"
label?.textColor = UIColor(red:0.93, green:0.92, blue:0.92, alpha:1.0)
label?.font = label?.font.withSize(36)
label?.textAlignment = .center
self.view.addSubview(label!)
}
else {
// remove it
if let foundLabel = self.view.viewWithTag(123) {
foundLabel.removeFromSuperview()
} else {
print("Couldn't find label with tag in view")
}
}
}
を間違った何かをしなければなりません新しいラベルとすべてがうまくいきます。愚かな間違い。
あなたは 'viewWillAppear'のタグでラベルを取得しています。次の行にデフォルトタグ0の新しい' UILabel'インスタンスを上書きします。何を期待していますか? – vadian