2011-06-23 12 views
4

TL;私の質問は本当にです:UIButtonのタイトルを空の文字列に設定する方法、または以前のタイトルが割り当てられている場合はnullです。UIButtonタイトルをヌルまたは空の文字列に設定する方法

私はそれを使用して、以下のタイトルだとNSStringの変数からのテキストに基づいて生成された文字列を受け入れUIButton持っている:この質問の便宜上

NSString *MyStringVariable = @"HELLO"; 
... 
[myButton setTitle:MyStringVariable forState:UIControlStateNormal]; 

、ちょうど私がhello「を持っていると仮定してみましょうを"私のNSString変数に設定します。

はUIButtonのを隠すん
[myButton setTitle:@"" forState:UIControlStateNormal]; 

:これは、その後、私のUIButtonは、タイトル「HELLO」、明らかに...

を持っています私は、そうのようなUIbuttonからこのタイトルを削除し、別のボタンを、持っていますタイトル(つまり、今は空のUIButtonのように見える)が、それ以上の検査ではタイトルは本質的に存在する。私は私のUIViewControllerに以下を追加した場合:

- (void)viewWillAppear:(BOOL)animated{ 
    NSLog(@"Title: %@", myButton.titleLabel.text); 
} 

をして、このビューからにあちこちを移動し、タイトルは「」私は@にテキストを設定したにも関わらず、コンソールにログインします続けています。

私はタイトルが本当に離れて行くようにするには、次の方法を試してみました:

[myButton setTitle:@"" forState:UIControlStateNormal]; 
[myButton setTitle:NULL forState:UIControlStateNormal]; 
[myButton setTitle:nil forState:UIControlStateNormal]; 
myButton.titleLabel.text = @""; 

私は@にタイトルを設定した場合、奇妙なことが(スペースで) "」、次のとおりです。

[myButton setTitle:@" " forState:UIControlStateNormal]; 

タイトルに正しく更新され、スペースは古いタイトルではなくコンソールに記録されます。

私の質問は本当にです:どのようにUIButtonのタイトルを空の文字列に設定するか、すでに前のタイトルが割り当てられている場合はnullにします。

答えて

1

これはSDKのバグのようですが、bugreportを作成します。

タイトルなしのボタンが本当に必要な場合は、自分で作成する必要があります。それを持つUIViewは、cornerRadiusを持つように設定されています(したがって、丸められます)。これは、ユーザーとのやりとりに応答します。また、three20ツールキットを確認してください。カスタムボタンや2つのボタンがあり、時間を節約するために使用できます。

1

これは、setTitle:forState:が呼び出されたときに、titleLabelプロパティが更新される方法と関係があると考えています。

たとえば、titleLabel.textプロパティに直接アクセスしてボタンのタイトルを設定しようとすると、機能しません(これについては無数の質問をチェックしてください)。

実際に何が起こっているのかを理解したい場合は、titleLabel.textとボタンの現在の状態の両方を確認する必要があります。これを実行する1つの方法は、viewWillAppear,viewDidAppear,およびviewDidDisappeartitleLabel.text,currentTitle、およびtitleForState:を記録することです。最初の2つ(titleLabel.text,currentTitle)は一致する必要があります.3番目の数字は期待通りです(titleForState:)。

5

私も同じ問題に直面しました。私はすべての州のためにボタンのタイトルを@""に設定しました。後でtitlelabel.textをチェックすると、前のタイトルは@""ではありません。そこで、PengOneが提案したボタンの可能な値をすべて出力し、プロパティtitleForStatecurrentTitleが更新された/正しい値を返すことを発見しました。

titleLabel.textを確認する代わりに、currentTitleまたはtitleForStateを確認してみてください。

titleLabelが正しく更新されない理由はまだ分かりません。

0

私は同じ問題を別のコンテキストで見たことがあります。 NSLocalizableStringを使用してボタンのテキストを変更しています。

UIButton.titleを設定すると、そのUIButton.titleLabel.textをそのUIButton.currentTitle変わりはありませんことが表示されます。

それはあなたのアプリケーションのための相違の多くを作らないかもしれないが、そのtitleLabel.txtcurrentTitle事実は、実装上の課題よりも、「意識する」のよりも、異なるターンです。

関連する問題