单个UIView上的多个UITableView

时间:2010-08-02 09:17:56

标签: iphone xcode uitableview ipad

我正在尝试将2个TableView放在一个UIView上。我已经实现了所需的方法。我已经使用断点测试了应用程序,并且该方法的项目失败了。

我有2个tableviews: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以下,那么一切都还可以。但是如果返回值大于10,则项目会因SIGABRT错误而失败,而在我的情况下,由于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 个答案:

答案 0 :(得分:2)

我希望我没有在这里误解你,但是。

为什么不为每个UITableView指定不同的委托?当你正在做“presets_tv.delegate = self”时,我假设你正在使用类似“radios_tv.delegate = self”的东西。

您必须使用不同的实际委托对象。也许您可以从符合UITableViewProtocol的NSObject创建一个新类,在视图控制器中实例化它们,并在创建表视图时将它们分别指定为委托。