2017-12-22 8 views
0

내 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)에 변경이있는 새 레이블을 만들되었다에서 몰랐어요 ... 뭔가 잘못하고 있어야합니다 새로운 레이블과 모든 것이 잘 작동합니다. 어리석은 실수.

+0

당신은'viewWillAppear'에서 태그에 의한 레이블을 얻었고 다음 줄에서는 디폴트 태그 0으로 새로운'UILabel' 인스턴스로 덮어 씁니다. 무엇을 기대합니까? – vadian

답변

0

코드가 생각한대로 작동하지 않습니다. recipesArr이 비어 있거나 더 정확하게 카운트가 0 인 경우 태그 123이있는 라벨 /보기를 찾으려고합니다. 그러면 무시되고 새 라벨을 만들지 만 태그를주지 마십시오.

는 그런 다음 라벨을 생성하고 태그의 설정됩니다
label?.tag = 123 

그 다음 나중에 찾을 수 있도록 :

은 무엇 당신이해야 할 것은이처럼 만든 후 사용자가 태그 (123)를 만들 레이블을 할당하다 .

+0

아 감사합니다. 내 멍청한 놈이 내가 UILabel (프레임 : CGRect (...))으로 레이블을 만드는 방법을 깨닫지 못해 새로운 레이블을 만듭니다. –

0

당신은 label = UILabel(frame: CGRect

당신이 선택적 항목없이 그렇게 프로그래밍처럼 라벨을 만들 수있는 줄 끝에서 레이블을 다시됩니다

lazy var recipeLabel: UILabel = { 
    let label = UILabel(frame: CGRect(x: 0, y: self.view.frame.height/3, width: self.view.frame.width, height: 100)) 
    label.tag = 123 
    label.text = "Add A Recipe" 
    label.font = UIFont.systemFont(ofSize: 17.0) 
    label.translatesAutoresizingMaskIntoConstraints = false 
    return label 
}() 

다음 iOS 9+ constraints if needed와 서브 뷰에 추가 :

self.view.addSubview(recipeLabel) 

이면보기 recipeLabel 또는을 참조하여 어디서나보기에 액세스 할 수 있습니다 원하는 경우속성.