2 UITableViews в 1 ViewController. Установите Delegate & DataSource в другой файл UITableViewController - PullRequest
1 голос
/ 29 декабря 2011

Итак, у меня есть два UITableView в моем ViewController, как мне установить делегат и источник данных второго источника как источник для другого файла 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", а потом что-то?

Действительно новый для Objective C,

с благодарностью,

Dex

Ответы [ 3 ]

5 голосов
/ 29 декабря 2011

Ты усложняешь свою жизнь.

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;
    }
}
2 голосов
/ 29 декабря 2011

Добавьте ваш импорт, как вы предложили:

#import "AddMoreTableViewController.h"

Обязательно создайте его экземпляр, затем установите it в качестве источника делегатов / данных вашей другой таблицы. Вот грубый пример (я оставлю вам управление памятью и семантику на ваше усмотрение):

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

Вы должны убедиться, что используете протоколы UITableViewDataSource и UITableViewDelegate в AddmoreTableViewController.

1 голос
/ 29 декабря 2011

Или вы можете написать tag для этой секунды 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...