2011-12-29 9 views
1

私はViewControllerに2つのUITableViewを持っていますが、別のUITableViewControllerファイルのデリゲート&データソースを2番目のものに設定するにはどうすればいいですか? 1秒間2 ViewControllerのUITableViews。代理人とデータソースを別のUITableViewControllerファイルに設定する

、私は現在、この

//now add our second tableview 
UITableView *addPapersTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 415)]; 

addPapersTableView.dataSource = self; 
addPapersTableView.delegate = self; 
[addPapersView addSubview:addPapersTableView]; 

起因selfビット、その明白引っ張ったデータと同じファイルから委譲されることにようにそれを作成しています。 #import "AddMoreTableViewController.h"のようなものをやっていますか?

#import "AddMoreTableViewController.h" 

は、その後、それのインスタンスを作成してください:あなたが示唆したよう

のObjective Cには本当に新しい、

大歓迎、

デックス

答えて

2

は、あなたのインポートを追加します。 を他のテーブルの代理人/データソースとして設定します。ここでは大まかな例です(私はあなた次第メモリ管理やセマンティクスを残しておきます):

AddMoreTableViewController *controller = [AddMoreTableViewController alloc] init]; 
myOtherTableView.datasource = controller; 
myOtherTableView.delegate = controller; 

あなたはプロトコルUITableViewDataSourceAddmoreTableViewControllerUITableViewDelegateを実装していることを確認する必要があります。

1

また、tagに基づいて、代理人が異なるテーブルを異なる方法で処理する場合は、UITableView &と書くこともできます。

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(tableView.tag == 1) 
     //handle table 1 here. 
    else if(tableView.tag == 2) 
     //handle table 2 here. 
    return; 
} 
+0

優秀、これについて知りませんでした!この場合、Jeremyは私の質問に答えてくれましたが、あなたの答えに感謝し、 'tag'を見てください:)ありがとう! – DexCurl

5

あなたの人生は複雑です。

firstTableView.dataSource = self; 
firstTableView.delegate = self; 

secondTableView.dataSource = self; 
secondTableView.delegate = self; 

UITableViewDelegateとUITableViewDataSourceプロトコルのすべてのメソッドは、パラメータのUITableView *を持っているので、あなたは、両方のテーブルビューを処理することができます。 例:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    if (tableView == firstTableView) { 
     return 1; 
    } 
    else { 
     return 4; 
    } 
} 
+0

合意して、あなたの人生をシンプルにしてください:) – Keller

+0

Jeremyがこのインスタンスで私の質問に答えたが、あなたの答えは素晴らしい!ありがとうございました :) – DexCurl

関連する問題