LoginSignup
0
0

More than 5 years have passed since last update.

setAttributedTitleへのnil渡しに注意

Last updated at Posted at 2017-02-14

setAttributedTitle:forState:へのnil渡しについて、
少し不思議な挙動をするので、覚書として。

概要

通常、ボタンのタイトル設定は
・ただタイトルを設定する場合は、setTitle:forState:
・文字装飾したタイトルを設定する場合は、setAttributedTitle:forState:
となります。

ただし、文字列にnilを渡した場合、
setAttributedTitle:forState:setTitle:forState:と異なる挙動をします。

動作確認

以下のスクリーンショットは
上は、setTitle:forState:にnil渡し
下は、setAttributedTitle:forState:にnil渡し
です。
スクリーンショット 2017-02-14 21.09.10.png

setTitle:forState:は空文字になっていますが、
setAttributedTitle:forState:は、InterfaceBuilderで設定したままのタイトルです。

setAttributedTitle:forState:へのnil渡しは、
以前にsetTitle:forState:でセットした文字列、
もしくはsetTitle:forState:を未設定の場合は、InterfaceBuilderで設定したテキストになります。

ちなみに、一度setAttributedTitle:forState:で文字列を設定してある場合でも、
再度setAttributedTitle:forState:でnil渡しを行うと、
setTitle:forState:やInterfaceBuilderの設定に戻ります。

nilでなく、空文字(@"")のNSAttributedStringを渡した場合でも同様の結果になります。

つまるところ

イマイチ理解に苦しむ挙動です。
setAttributedTitle:forState:にnil渡しは、極力避けるべきでしょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0