2012-07-20 14 views
34

私はこれがおそらく愚かな質問だと思っています...しかし、とにかく私はこの種の奇妙なものを持っていますUIButtonタイトル動作。UIButtonのタイトルがデフォルトに変更されます

ボタンがセットアップされ、IBのアクションとプロパティの両方に接続されます(アクションはstartButtonPushedで、プロパティはstartButtonです)。の割合のためにもともと私はIBにデフォルトのタイトルを持っていた

bool buttonStateStop; 

- (IBAction)startPushed:(id)sender 
{ 
    if (buttonStateStop) 
    { 
     [appD.locationManager stopSavingLocations]; 
     startButton.titleLabel.text = @"Start"; 
     buttonStateStop = NO; 
    } 
    else 
    { 
     [appD.locationManager startSavingLocations]; 
     startButton.titleLabel.text = @"Stop"; 
     buttonStateStop = YES;   
    } 
} 

は、「スタート」に設定されていますが、私はボタンを押したときに、それが「停止」に変更します:ビューコントローラの内部で私はこのような設定のアクションを持っています2番目とその後に戻ります。タイトルが「スタート」に戻ってきた理由を理解しようとしばらく時間をかけました。最終的に私はIBのタイトルを「xxxxxx」に変更し、ボタンのタイトルが変更された直後にIBのタイトルが何であっても再確認されることに気付きました。

質問:なぜ、IBはボタンのタイトルをデフォルトに戻し続けていますか?私はこれまでにこのような行動をしたことはありません。そして(どうやら)私はそれを修正することができますか?

追加情報:ボタンへの参照は、@property,@synthesize、および上記のコードのステートメントのみです。ビューはナビゲーションコントローラの内部にあります。あなたが代わりにtitleLabel.textプロパティを設定するのsetTitle:forState:メソッドを使用する必要が

答えて

65

[startButton setTitle:@"Start" forState:UIControlStateNormal]; 
// Normal and highlighted titles do not need to be the same 
[startButton setTitle:@"Start!" forState:UIControlStateHighlighted]; 

今何が起こるあなたは、現在の状態の見解を示してラベルにタイトルを設定しますが、状態が変化したら、ということですプッシュからノーマルに変更すると、ボタンはラベルを新しい状態のタイトル(IBで設定したテキスト)に戻します。

+0

で、これは私の問題でした。非常に奇妙な行動、私は前に何の問題もなくまったく同じことをやったので。 – Dustin

+0

"時にはうまくいく!"問題は、ドコでは、.titleLabelを使用してテキストの**スタイリング**(etc)を変更することに言及していることです。どんな面倒です! – Fattie

5

本の迅速なバージョンは、あなたが正しい

startButton.setTitle("Start", forState: UIControlState.Normal) 
+0

今すぐ 'startButton.setTitle(" Start "、:for .normal)'彼らが再びそれを変更するまで – CupawnTae

関連する問題