2011-08-15 4 views
1

私は定期的に更新する必要があるラベルを持つUIButton(xibで定義されている)のセットを持っています。これらのボタンのスーパーのビューコントローラのviewDidLoadメソッドでは、私が行う更新方法を持って、各ボタンのために:xibのUIButtonsはどうなっていますか?

button.titleLabel.text = @"Relevant Text"; 
[button setNeedsDisplay]; 

、あなたがボタンをタップし、別の方法は、UIAlertViewをポップアップ表示され実行されます今度は最初のテキスト設定方法とほとんど同じことを行い、ビューコントローラのメソッドをコールバック:

button.titleLabel.text = @"New Text"; 
[button setNeedsDisplay]; 

このコードは単純に動作していないが、ボタンのラベルのテキストがで更新されません。いずれの方法でも、白い空白のボタンのままです。 xibでは、ボタン上にテキストを定義しません。ポイントはありません。ボタンのテキストは、実行時に設定されていないと意味がありません。いずれにしても、私は牡蠣の上で、ボタンのテキストを "テストテストテスト"に設定することに決めました。

この特定のボタンをタップすると、UIAlertViewがポップアップしますが、バックグラウンドでボタンのテキストが「テストテストテストのテスト」に変更されます。そしてこの時、UIAlertViewコールバックは私が期待していることを行い、そのボタンだけのテキストを設定します。もう一度ヒットすると、UIAlertViewを終了するまで、に「テストテストテストテスト」が表示されます。このコールバックメソッドは、コールバックメソッドを実行し、メソッドの必要に応じてボタンテキストを設定します。

私はここで何が起こっているのか、またはxibに最初にテキストを設定するのは、後でそのテキストをプログラマチックに設定できるかどうかについては何の関係もありません。明らかに、これは私が望む振る舞いではなく、ボタンのテキストを確実に設定する方法を知りたい。

編集:setTitleについてのSVDのアドバイス:ForState:solved my problem、thanks。私はまだ興味がありますが、.xibに設定されているタイトルラベルが表示されるのはなぜですか?ただし、UIAlertViewのポップアップが表示されているときだけです。

+1

実際に接続されているボタン用のコンセントはありますか?あなたはそれがゼロではないと確信していますか? – jtbandes

答えて

2

[setTitle:forState:]を使用して、通常の強調表示された(または選択された)状態のボタンタイトルを設定する必要があります。

(また、ボタンがコンセントに接続されていることを確認してください)

+0

私はまったく同じ問題を抱えていて、[setTitle:forState]メソッドを使うと正しく設定されました。 – MystikSpiral

関連する問題