私のviewWillAppear()で、ラベルを作成してタグを付けます。別の条件が満たされた場合、ラベルを削除しようとしましたが、何らかの理由でそれが機能せず、ラベルはまだ表示されています。私は何か間違ったことをしているに違いない...
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")
}
}
}
この行でlabel = UILabel(frame: CGRect(x: 0, y: self.view.frame.height/3, width: self.view.frame.width, height: 100))
、デフォルトのタグが0の新しいラベルを作成していることに気づきませんでした。新しいラベルを作成せずlabel?.frame = CGRect(x: 0, y: self.view.frame.height/3, width: self.view.frame.width, height: 100)
、すべてが正常に機能するように変更しました。愚かな間違い。
あなたのコードはあなたが思っていることをしていません。あなたのrecipesArrが空の場合(またはより正確にはカウントがゼロの場合)、タグ123のラベル/ビューを見つけようとしています。それは無視され、新しいラベルを作成しますが、タグを付けません。
次のようにタグを作成した後、タグ123を作成するラベルを割り当てる必要があります。
label?.tag = 123
次に、ラベルを作成し、タグを設定して、後で見つけられるようにします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加