2016-11-18 14 views
1

なぜUIButtonのtitleLabelがオプションなのか?なぜUIButtonのtitleLabelがオプションなのか?

感嘆符を付けることで、このオプションを暗黙的にアンラップすることは安全ですか?そうでない場合、titleLabelがnilの場合はどうなりますか?

私はUIButton.titleLabelを使用して、UIButtonから直接アクセスできないUILabelプロパティを変更します。たとえば、フォントを変更したり、複数行のラベルを付けることができます。

答えて

1

ベストプラクティスは強制的にアンラップするものではありませんが、必要なときにはUIButton.titleLabelが存在することをかなり保証することができます。私は、構文の100%わからないが、それは個人的にlazy var titleLabel:UILabel = {}()

あなたは、私が使用したいアンラップを懸念している場合、私は言うだろうではない遅延読み込みのいくつかのフォームだguardまたはif let

guard let label = myButton.titleLabel else {return} 
label.font = .systemFontOfSize(10.0) 

if let label = myButton.titleLabel { label.font = .systemFontOfSize(10.0) }

+0

すてきなことに、ありがとう! – AamirR

0

ボタンに割り当てられた任意のTitleせずにすることができるからです。場合によってはImageのみが必要です。

したがって、ボタンのタイトルに割り当てようとすると、そのボタンのタイトルにアクセスしようとすると、アプリがクラッシュすることがあります。

+0

'let btn = UIButton()'とそれに続く 'print(btn.titleLabel == nil)'は私が知る限り、常にfalseを出力します。 –

関連する問題