Несколько UITableView на одном UIView - PullRequest
0 голосов
/ 02 августа 2010

Я пытаюсь поместить 2 TableViews в один UIView.Я реализовал необходимые методы.Я проверил приложения с точками останова, и проект провалился при этом методе.

У меня есть 2 просмотра таблицы: radios_tv и presets_tv Два массива от делегата, из которого получен счет: array_radios и array_presets array_radios содержит 10 элементов.Аргумент array_presets содержит 30 элементов.

Я проверил на детали:

if (tableView == self.presets_tv) {
    return appDelegate.array_presets.count; //Contains 30 elements in the array_radios
}

Все в порядке, если я поставлю возвращаемое значение ниже 10. Но проект завершится с ошибкой SIGABRT, если возвратбольше 10, и в моем случае, так как array_presets содержит 30 элементов, происходит сбой.

Ниже мой код:

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];

if (tableView == self.radios_tv){
    return appDelegate.array_radios.count; //Contains 10 elements in the array_radios
} 

if (tableView == self.presets_tv) {
    return appDelegate.array_presets.count; //Contains 30 elements in the array_radios
}
}

Вот мой cellForAtRowIndex

   // Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Configure the cell...
// Set up the cell
MyAppAppDelegate *appDelegate = (MyAppAppDelegate *)[[UIApplication sharedApplication] delegate];
if (tableView == radios_tv) { //radio_tv is an IBOutleet UITableView
    sqlClass *aRadio = (sqlClass *)[appDelegate.array_radios objectAtIndex:indexPath.row];
    [cell setText:aRadio.r_name];
    return cell;
}
    if (tableView == presets_tv) { //preset_tv is an IBOutlet UITableView

    }

}

Можете ли вы помочь мне, пожалуйста.

1 Ответ

2 голосов
/ 02 августа 2010

Надеюсь, я вас не понял неправильно, но.

Почему бы вам не указать другой делегат для каждого UITableView?Я предполагаю, что вы используете что-то вроде «radios_tv.delegate = self», когда вы также делаете «presets_tv.delegate = self».

Вы должны будете использовать разные фактические объекты делегата.Возможно, вы могли бы создать новый класс из NSObject, соответствующий UITableViewProtocol, создать их экземпляр в контроллере представления и назначить их в качестве делегатов соответственно при создании табличных представлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...