40450


swift3で、配列の要素の有無でラベルの表示･非表示を切替えたいのですが、うまくいきません。  
下記のコードだと、（q9Labelの配列要素は有りで、q10Labelは無し）テキスト表示はq9Label有り、q10Label無しで表示され合っているのですが、ラベル自体（backgroundColor有り）が非表示になりません。  
訂正箇所、その他の方法などがありましたら教えて頂きたいのですが、宜しくお願い致します。

[code]

    let q9Label = UILabel()
    let q10Label = UILabel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        q9Label.text = dArray[21]
        q9Label.frame = CGRect(x: 20, y: 470, width: 335, height: 30)
        q9Label.textColor = UIColor.black
        q9Label.backgroundColor = UIColor.lightGray
    
        if q9Label.text != nil {
            view.addSubview(q9Label)
        }
    
    
        q10Label.text = dArray[23]
        q10Label.frame = CGRect(x: 20, y: 500, width: 335, height: 30)
        q10Label.textColor = UIColor.black
        q10Label.backgroundColor = UIColor.lightGray
    
        if q10Label.text != nil {
            view.addSubview(q10Label)
        }
    }
    
[/code]


CC BY-SA 3.0
2017-12-20T07:49:34.160
40421
2017-12-21T14:18:08.430
2017-12-21T14:18:08.430
754
26719
question
swift3
Labelの表示・非表示


はじめまして。

まず、q9/q10LabelはaddSubviewしないで、Storyboardやxibで画面に最初から配置しておいて`weak
IBOutlet`で、q9/q10Labelとバインドしておけばいいのではないかとおもいます。  
そうすれば、Label.frameなどをコードに書かずにコードがすっきりすると思います。

上のようにアプリの作り方を変えることで、q9/q10Labelが指すラベル部品はviewのサブビューとして実体があるので、常に表示されることになります。

次いで、各ラベルの表示、非表示は

[code]

    if q9Label.text == nil {
        q9Label.hidden = true
    }
    
    if q10Label.text == nil {
        q9Label.hidden = true
    }
    
[/code]

とすると親`view`の中に実体があるけれど非表示になると思います。


CC BY-SA 3.0
2017-12-21T12:59:00.943
40450
2017-12-21T12:59:00.943
14745
40421
answer