2012-01-10 5 views
3

「Google」という名前のsample.xibに1つのボタンがあり、webviewを使用してsample1.xibにgoogleページを読み込みたいとします。私はfb、youtubeなどのような多くのボタンを持っているかもしれません。さて、どのボタンがクリックされているかを確認したいのですが、sample1.xibはウェブページを表示します。ボタンのテキストやIDを取得するにはどうすればよいですか?他の.xibのボタンタグを取得する

答えて

1

ボタンにはtagを設定し、それをIDとして扱います(注:数字のみ有効です)。

[fbButton setTag:1]; 
[fbButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
//... 

[youtubeButton setTag:2]; 
[youtubeButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
//... 

とあなたのボタンアクション:タグを使用して

- (void)buttonAction:(id)sender 
{ 
    switch (((UIButton *)sender).tag) { 
     case 1: 
      // load facebook view 
      break; 

     case 2: 
      // load youtube view 
      break; 

     default: 
      break; 
    } 
} 
+0

ファイン、それは動作しますが、私は別の.xibでそのIDを欲しいので、別の.xibでそのIDにどのようにアクセスできますか? – Krunal

+0

@Gotiは '[youtubeButton addTarget:self action:@selector(buttonAction :) forControlEvents:UIControlEventTouchUpInside];の' self'を 'buttonAction:'を定義した '' youTubeButton addTarget:sample1 action :@selector(buttonAction :) forControlEvents:UIControlEventTouchUpInside]; – Kjuly

+0

Thnx buddy ...それは働く.... – Krunal

3

は少し不格好です。あなたは追跡しておくべきもう一つのことがあります。これを行うには2つの方法があります。

最初の方法

ボタンごとに異なるアクションメソッドを使用します。これはたくさんの繰り返しコードのように見えるかもしれませんが、私は人間が読むのが簡単なコードを書いて、コンパイラに最適化をさせると信じています(少なくともプロファイルするまで)。それぞれの方法はないとopenGoogleInWebviewなどのアクション名がこれにそうbuttonAction

より多くの有益である - ワイヤーまでの各アクションに各ボタンのアクション(それは、Interface Builderで、非常に簡単です):

- (IBAction)openGoogleInWebview; 
- (IBAction)openYouTubeInWebview; 

など

参照してください。これを最適化するには、 URLとは、WebViewの中でそれを開き、そのURLを送信します。たとえば

- (IBAction)openGoogleInWebview { 
    NSURL *url = // Your URL here; 
    [self openWebviewWithURL:url]; 
} 
... 
- (void)openWebviewWithURL:(NSURL *)url { 
    // load your webview with the url 
} 

は、読みやすく、保守が容易にコンパートメント物事を保持します。

第二の方法

あなたが本当に押されたボタンによって異なり、単一の方法で行くことにしたい場合は、ボタンのタグを使用する理由はありません。これは保守不能です。すでにボタンごとに一意の識別子があります。ポインタアドレスです。

あなたのビューコントローラであなたのボタンのIBOutletsを作成する場合は、あなたがする必要があるすべては、ポインタをチェックします:

の.h

@property (weak, nonatomic) IBOutlet UIButton *googleButton; 
@property (weak, nonatomic) IBOutlet UIButton *youTubeButton; 

.M

- (IBAction)buttonClicked:(id)sender { 
    if (sender == googleButton) { 
     // load Google 
    } else if (sender == youTubeButton) { 
     // load YouTube 
    } // etc 
    ... 
} 

アゲイン - より保守的。ボタンのタグを追跡する必要はありません。そして、コードははるかに読みやすくなっています。なぜなら、GoogleのボタンがGoogleのページを読み込むからです。これは、tag1がGoogleのページを開き、タグがGoogleのボタンのタグになっていると言うよりもきれいです。私は解決策を持っている

0

.... 2番目のビューで変数を宣言し...と、最初のビューでそれを使用...とタグの最初のビューからタグを取得する.... :)

関連する問題