2011-12-29 58 views
1

所以我有兩個UITableViews在我的ViewController中,我如何設置代理&數據源的第二個到另一個UITableViewController文件。2個ViewController中的2個UITableViews。將Delegate&DataSource設置爲不同的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"的東西嗎?

真正的新目標C,

大爲讚賞,

敏捷

回答

2

添加import如你所說:

#import "AddMoreTableViewController.h" 

確保創建它的一個實例,然後將設爲作爲其他表的代表/數據源。這裏有一個粗略的例子(我會離開的內存管理和語義由你):

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

你必須確保你正在實現協議UITableViewDataSourceAddmoreTableViewControllerUITableViewDelegate

1

或者你可以在這一秒寫 UITableView &在代表處處理不同表的方式根據它們的tag不同。

- (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 2011-12-29 19:23:26

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 2011-12-29 19:16:34

+0

雙方同意,而傑里米在這種情況下回答我的問題,你的答案是偉大的!謝謝 :) – DexCurl 2011-12-29 19:22:16

相關問題