「Google」という名前のsample.xibに1つのボタンがあり、webviewを使用してsample1.xibにgoogleページを読み込みたいとします。私はfb、youtubeなどのような多くのボタンを持っているかもしれません。さて、どのボタンがクリックされているかを確認したいのですが、sample1.xibはウェブページを表示します。ボタンのテキストやIDを取得するにはどうすればよいですか?他の.xibのボタンタグを取得する
答えて
ボタンには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;
}
}
は少し不格好です。あなたは追跡しておくべきもう一つのことがあります。これを行うには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のボタンのタグになっていると言うよりもきれいです。私は解決策を持っている
.... 2番目のビューで変数を宣言し...と、最初のビューでそれを使用...とタグの最初のビューからタグを取得する.... :)
- 1. .xibファイルのXMLテキストの取得
- 2. xibファイルからIBOutletsを取得
- 3. html5ボタンタグのCSSリセット
- 4. 他のコントローラのインスタンスクラスを取得する
- 5. 他のスレッドのバックトレースを取得する
- 6. XIBからビューをロードし、nil macOSアプリケーションを取得する
- 7. 他の表の他の表の表の数を取得する
- 8. スライドドアCSS、ボタンタグ、IE8
- 9. 別のxibからUITextFieldの値を取得
- 10. XIBからSwift 3.0のviewControllerにカスタムViewCellを取得する方法
- 11. 他のxibでUINavigationControllerを作成しますか?
- 12. フレンドのフレンドリストを取得して他のユーザーからrelationship_detailsを取得する
- 13. 他のプロジェクトのxibとクラスにアクセスできますか?
- 14. ビューコントローラでカスタムビューxibを使用するxib
- 15. 他のレビューサイトからのレビューを取得
- 16. C++他のユーザーのappdataパスを取得
- 17. 他のモジュールからのメッセージを取得
- 18. 他のテーブルでROWSの数を取得
- 19. クラス内の特定のボタンタグを選択する方法
- 20. ボタンタグ付きの2つのポストパラメータを送信するには?
- 21. クラスをjqueryのボタンタグの内側に追加する
- 22. ボタンタグからhtmlにナビゲート
- 23. サービスワーカーが他のワーカーからデータを取得した後に取得する
- 24. 他のオブジェクトの中にあるオブジェクトを取得する
- 25. 他のウェブページにリダイレクトされるウェブページのコンテンツを取得する
- 26. 他のアプリケーションからアンドロイド:ラベルを取得
- 27. 他のデータベースからデータを取得
- 28. 他のインテントからイメージを取得
- 29. 他のビューコントローラからイベントを取得
- 30. 他のクラス/スコープからvarを取得
ファイン、それは動作しますが、私は別の.xibでそのIDを欲しいので、別の.xibでそのIDにどのようにアクセスできますか? – Krunal
@Gotiは '[youtubeButton addTarget:self action:@selector(buttonAction :) forControlEvents:UIControlEventTouchUpInside];の' self'を 'buttonAction:'を定義した '' youTubeButton addTarget:sample1 action :@selector(buttonAction :) forControlEvents:UIControlEventTouchUpInside]; – Kjuly
Thnx buddy ...それは働く.... – Krunal