2009-07-20 11 views
3

これはiPhone/Cocoaの非常に簡単な質問です。私は2つのビューの間を遷移するボタンを持っています。私はインターフェイスビルダーを使用してこれのほとんどを設定しました。ボタンをクリックして2番目のビューが表示されたら、プログラムのボタンのテキストを変更するにはどうすればいいですか?コントローラのInterface Builderで作成されたUI要素にアクセスしますか?

答えて

0

「コンセント」を定義して接続する必要があります。 the documentationを見て、「接続とバインディング」のセクションに注意してください。あなたのクラス宣言で

10

、ボタンオブジェクトを宣言し、それをIBOutletとして指定されていることを確認します

IBOutlet UIButton* myButton; 

この変更を保存すると、あなたが戻っInterface Builderのに行けば、あなたはこのコンセントが表示されますFile's Ownerを右クリックしたとき(あなたがFile's Ownerを正しく指定したと仮定します)。このコンセントを右クリックしてドラッグすると、画面上のUIButtonに関連付けられます。

オンスクリーンオブジェクトは、コード内の名前に関連付けられています。

あなたはUIButton上のテキストを変更したいWhereever、ちょうど言う:

[myButton setTitle:@"Back - or whatever else you want it to say" 
      forState: UIControlStateNormal ]; 
// you can set different title text for each state 
// of the button (selected, active, or normal) 
+1

これはオブジェクトではなく変数であることを明確にしています。変数はオブジェクトへのポインタを保持します(ペン先がロードされると)。私はあなたがこれを知っていることを知っていますが、多くの人々がこれを混同して、変数がオブジェクトだと思います。 –

2

あなたはIBのための出口に設定する必要があります:IBを立ち上げ、

@interface MyViewController : UIViewController { 
    IBOutlet UIButton *myButton; 
} 

保存し、ファイルの所有者をMyViewControllerに設定し、UIViewとUIButtonの両方の参照アウトレットを接続インスペクタのファイル所有者の適切なポイントに作成します。次に実装では、あなたができる

:あなたは、接続で迷子場合

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

、私はいくつかの詳細には触れており、http://www.stanford.edu/class/cs193p/cgi-bin/index.phpでの講義ノートやビデオ講義を見たお勧めしますiPhoneの基本について

希望に役立ちます。

4

また、コントロールに一意のタグを割り当て、-[UIView viewWithTag:]を使用して、コントロールへのポインタをUIViewにすることができます。ほとんどの場合、コンセントは推奨されていますが、タグは表のセルなどに便利です。

2

これまでの記事のほとんどは、ボタンを作成することに焦点を当てており、非常に正しいです。

ボタンをクリックして2番目のビューが表示されたら、ボタンのテキストをプログラムで変更するにはどうすればいいですか?

私があなたの状況を正しく理解すれば、プラグアンドプレイのUINavigationBarControllerを使用するのが最も簡単な方法です。まず、ビュースタックに2番目のビューコントローラをプッシュする:あなたの第2のビューコントローラが表示されたら

// In firstViewController.m 
self.navigationController = [[UIViewController alloc]initWithNibName:@"secondView" bundle:nil]; 
[self pushViewController:secondViewController animated:TRUE]; 

、あなたは自動的にナビゲーションバーの左側にある[戻る]ボタンを取得する必要があります。そのバックボタンのテキストを変更する必要がある場合は、単にそのようにそれを参照することができます。

// In secondViewController.m 
-(void)ViewWillAppear 
{ 
    [self.navigationItem.backBarButtonItem setText:@"GoBack"]; 
} 

も残っているとrightBarButtonItem(s)は、より複雑なナビゲーションのために便利です。ここでは、プラグアンドプレイのシナリオが少なくなります。

// In secondViewController.h 
-(IBAction)goBack; (this should appear as an action in your associated nib file) 

// In secondViewController.m 
-(void)viewDidLoad 
{ 
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"GoBack" style:UIBarButtonItemStylePlain target:self action:@selector(goBack)]; 
} 

-(IBAction)goBack 
{ 
    // logic to be done before going back 
    [self popViewControllerAnimated:secondViewController animated:TRUE]; 
} 
+0

だから、これは客観的なことです。それは汚れているようです。 – jjnguy