Я имел дело с этой вещью в одном из моих проектов (вы можете посмотреть его: бесплатное приложение с именем IJCAI11 в магазине приложений; вкладка «Люди» (там индексация выполняется с помощью отдельного tableView));и, насколько я вижу из приведенного выше кода, вы делаете вещи слишком сложными.Я опишу, как я это сделал, вместо того, чтобы сказать, что вы не должны делать:)
У меня был только один класс, скажем, YaddaYaddaViewController.
@interface YaddaYaddaViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
UITableView *tableView1;
UITableView *tableView2;
}
@property (nonatomic, retain) IBOutlet UITableView * tableView1;
@property (nonatomic, retain) IBOutlet UITableView * tableView2;
@end
Обратите внимание, что viewController является производным от UIViewController, а не от UITableViewController (цель класса UITableViewController состоит в том, чтобы иметь возможность реализовать простой tableView за 2 минуты, для более нестандартных вещей вы всегда должны использовать UIViewController. Чтобы прочитатьподробнее об этом, взгляните на документацию класса UITableViewController).
В IB для «Владельца файла» я просто устанавливаю YaddaYaddaViewController;Я связываю выходы tableView1 и tableView2 с соответствующими таблицами в представлении;Я связываю делегат и источник данных с обоими tableView1 / 2, поэтому у меня есть «множественный» делегат и источник данных.
И, наконец, в коде для всех методов делегатов (например, tableView: cellForRowAtIndexPath :) Я просто обращаю внимание на значение tableView, делегат-событие которого вызвало вызов этого метода, например:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.tableView1) {
// some code here
} else {
// alternative code here
}
}
Надеюсь, это поможет!