Objective
このブログ記事の主な目的は、delegateとは何か、iOSアプリケーションでどのように役立つかを説明することです。
あなたは最終的な出力を取得します:
デリゲートとは何ですか?
デリゲートは、単にiOSアプリケーションのオブジェクト間の通信手段にすぎません。 委任は、オブジェクトを接続して相互に通信する簡単な方法と考えることができます。 言い換えれば、delegateは、イベントが発生したときに1つのオブジェクトが他のオブジェクトにメッセージを送信できるようにすると言えます。 実際の例でこれを理解することができます。 5つのカウンターを持つオフィスがあるとします。 あなたはオフィスに入り、カウンター1に行き、そのカウンターにいくつかの詳細を提出します。
今、あなたの詳細は、カウンタ3が知っているが、カウンタ1はしないいくつかのプロセスを通過する必要があります。 この場合、counter3はイベントを処理するデリゲートであり、counter1によって参照されます。 カウンタ3がデータの処理を完了すると、プロセスが完了したことを通知するメッセージがカウンタ1に送り返され、さらに進むことができます。
例:
UIAlertViewsを使用している可能性があります。
:
UIAlertView *alert = initWithTitle:@"Title" message:@"This is an alert view" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
UIAlertViewの初期化子メソッドには、delegateという名前のパラメータがあります。 このパラメータをselfに設定すると、現在のオブジェクトはUIAlertViewクラスのこのインスタンスによって起動されたすべてのイベントを処理します。
イベントを処理したくない場合は、以下に示すように、このパラメータをnilに設定するだけです:
UIAlertView *alert = initWithTitle:@"Title" message:@"This is an alert view" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
アラートに複数のボタンがあり、どのボタンがタップされているかを知りたい場合は、UIAlertViewDelegateプロトコルで定義されている以下のメソッドを実装できます。
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ NSLog(@"You have tapped button # %@",);}
これは事前定義されたデリゲートの例でした。 しかし私達が私達の自身の代理人を作成したいと思えば何か。 では、独自のデリゲートを作成する方法を学びましょう:
ユーザー定義デリゲートを作成する方法は?
簡単な例をステップバイステップで作成して、ユーザー定義デリゲートを作成する方法を学びましょう。 ユーザーから名と姓を取得し、フルネームを表示する例を作成します。 デリゲートの概念を理解するために、別のViewControllerから姓を取得し、最初のViewControllerに姓を渡すようにデリゲートを設定します。ステップ1プロジェクトの作成&デザインUI
まず、DelegateDemoという名前の新しいXcodeプロジェクトを作成して保存します。 これには1つのViewControllerが含まれます。
storyboardファイルを変更し、次の図に示すように変更します:
ステップ2新しいクラスの作成
UIViewControllerクラスのサブクラスとなるLastNameViewControllerという名前の新しいクラスを作成し、このクラスを2番目のViewControllerに割り当てます。
ステップ3新しいビューを開くためのセグエ
最初のViewControllerのボタンから2番目のViewControllerにセグエを作成します。ステップ4ステップ5ステップ6ステップ7ステップ8ステップ9ステップ10ステップ11ステップ12ステップ13ステップ14ステップ15ステップ16ステップ17hファイル
今、あなた自身のデリゲートを作成する時間です。 LastNameViewControllerに移動します。hファイルは次としてそれを変更し、:
#import <UIKit/UIKit.h> @protocol LastNameViewControllerDelegate-(void)setLastName:(NSString *)lastName;@end @interface LastNameViewController : UIViewController @property (nonatomic,retain) id delegate;@property (weak, nonatomic) IBOutlet UITextField *txtLastName;- (IBAction)btnDoneTapped:(id)sender; @end
ここでは、独自のデリゲートを作成するには、まずプロトコルを作成し、その実装なしで必要なメソッドを宣言する必要があります。 次に、delegate@propertyを作成する必要があります。 また、iboutlet姓テキストフィールドをtxtLastNameとして作成し、2番目のViewControllerのdoneボタンにIBAction btnDoneTapped()を作成します。ステップ5プロトコルメソッドの呼び出し
次にLastNameViewControllerに移動します。mファイルと以下のようにbtnDoneTapped()メソッドを変更します:
- (IBAction)btnDoneTapped:(id)sender{ ; ; ;}
ここでは、前の手順で作成したdelegateにlast nameの値を設定します。 次のステップに従って、最初のview controller
つまりViewControllerでこの値を取得します。ステップ6作成されたプロトコル
のデリゲートを設定して、LastNameViewControllerから値を取得します。Mファイルを表示します。mファイル、まずViewControllerでデリゲートを自分自身に設定する必要があります。mファイル。 Deleagteをそれ自体に設定するには、ViewControllerに以下のメソッドを追加する必要があります。mファイル:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ LastNameViewController *lastNameViewController = ; lastNameViewController.delegate = self;}
segueを介してLastNameViewControllerをロードしているため、このメソッドを実装してデリゲートを自分自身に設定します。 しかし、このためにはViewControllerを変更する必要があります。以下に示すように、hファイル。Step7Delegateメソッドの実装
last nameの値を取得するには、ViewControllerにdelegateメソッドを実装します。次としてmファイル:
-(void)setLastName:(NSString *)lastName{ NSString *fullName = ; txtFullName.text = fullName;}
iOSデリゲートに関連するクエリがある場合は、以下のコメントでそれらをコメントしてください。
私はあなたがiOSの代理人に取り組んでいる間、このブログが役に立つことを願っています。 あなたはiOSに関するご質問や懸念がある場合は、私に知らせて、ここにコメントを入れて、我々はできるだけ早くあなたに戻って取得してくださ IPhoneアプリ開発のアイデアを得ましたか? あなたはまだ何を待っていますか? 私達に今連絡し、考えがすぐに住んでいるのを見て下さい。 私たちの会社は、インドで最高のiPhoneアプリ開発会社の一つとして命名されました。
私はiOSの開発者です。 私は新しい技術を学ぶのが好きです。 私は、どんな愚か者もコンピュータが理解できるコードを書くことができると信じていますが、良いプログラマーは人間が理解できるコードを書くと信じています。