2011-01-09 4 views
2

私は2つのプロトコルを実装ビューコントローラがある場合:XCodeの/ IOS代表

@interface CustomerOperationsViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>

のプロトコルのために必要なコールバックを作成するための簡単な方法はありますか?たぶん実装メソッドのXCodeショートカットですか?私はこれのために毎回ドキュメンテーションに行くつもりです。

関連する、デリゲートをファイル所有者とは異なるファイルに置くことは可能ですか? UI要素からファイル所有者以外のクラスにドラッグする方法がわかりません.....

答えて

3

XCodeへようこそ、もっと不満なIDEがあります。コールバックの事前入力は特に簡単な方法ではありませんが、CodeSenseで行う必要があります。ヘッダファイルからコピー/ペーストすることもできますが、手作業で編集する必要があります。

2番目の質問:はい - あなたの代理人はファイル所有者である必要はありませんが、通常は何か他の人に設定していた場合は、IBではなくプログラマチックに行います。あなたの代理人はどこにいてよろしいですか?別のビューコントローラ、または別の何か?

+0

私はそれがApplicationDelegateに似た別々のファイルにきれいになります考えていました。しかし、ビューコントローラで設定された他のアウトレットなどに簡単にアクセスできないので、これはベストプラクティスではないと思います。例えば私は、ビューコントローラに代理人を置くのがベストですか? –

+1

はい、私はIntelliJがありません:) –

+0

デリゲートをビューコントローラに配置するのが通常です。アップルのテンプレートUITableViewControllerファイルを参照してください。しかし、あなたは確かに別のクラスやオブジェクトを使うことができます。私は定期的に行ったことではありません。私が持っているときは、IBを使ってデリゲートプロパティを設定しませんでした。厳密にMVCであれば、デリゲートをビューコントローラに置くことができます。たとえば、UIPickerViewの場合:PickerView自体が* view *にあり、そのピッカーに表示される内容のコントロールが*コントローラ*(データは* model *に入りますが、pickerviewの場合は別のクラスではないかもしれません)。 – lxt

4

デリゲートメソッドをクリックするだけでデリゲートのヘッダーが表示されるため、適切なドキュメントのインターネット(例:Appleの開発者サイト)を参照する必要はありません。また、私は、デリゲートを実装するたびに、私は通常、このようなコードを書く私の実装ファイルに:

#pragma mark - UITableViewDelegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // implementation here ... 
} 

#pragma mark - UITableVieWDataSource 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // implementation here ... 
} 

コマンドクリックすることにより、プラグママークテキストに(UITableViewDelegate/UITableViewDataSource)、デリゲートのヘッダが少ないだけでなく表示されます現在のクラスのヘッダーファイルへのナビゲーションは、Commandキーを押しながらプロトコルをクリックします。デリゲートのヘッダーから必要なメソッドをコピーして貼り付けるだけです。

最後に何をちょうどXcodeの(あなたがオートコンプリートしたいプロトコルに準拠した実装ファイル)に入力を開始しているにも便利です...

- tableView 

、プレス脱出。 tableViewデリゲートメソッドがポップアップし、タブで必要なものを選択すると、自動的に完成します。他のオブジェクトの代理人にも同じです。

Example