tableview单元格无法加载两个tableviews

时间:2012-04-20 09:24:15

标签: ios uitableview nsexception

如果我只加载一个表视图,我在视图中必须有两个表视图才能正常工作。 但是当我尝试使用下面的方法加载两个表视图时,它给出了以下异常。

未捕获的异常'NSRangeException',原因:' * - [NSArray objectAtIndex:]:索引2超出边界[0 .. 1]'

- (void)viewDidLoad {
[super viewDidLoad];

array1 = [[NSArray alloc]initWithObjects:@"Start",@"End",@"Frequency",@"Time of Day",nil];
array2 =[[NSArray alloc]initWithObjects:@"Alarm",@"Tone",nil];

table1.scrollEnabled =NO;
table2.scrollEnabled =NO;

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView == table1) ;
   return 1;

if (tableView == table2); 
    return 1;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == self.table1) ;
    return [array1 count];
if (tableView == self.table2) ;
    return [array2 count];

}

- (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...


if (tableView == self.table1){
    cell.textLabel.text = [array1 objectAtIndex:indexPath.row];     

}
if (tableView == self.table2){
    cell.textLabel.text = [array2 objectAtIndex:indexPath.row];     

}
return cell;}

1 个答案:

答案 0 :(得分:1)

您可能会请求索引大于您的某个数组的对象。您是否正确地– numberOfSectionsInTableView:– tableView:numberOfRowsInSection:方法检查了哪些表被调用并根据您的数据数组返回适当的值?
更新
以这种方式编辑方法:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
    if (tableView == self.table1)
       return 1;

    if (tableView == self.table2)
       return 1;

    return 0;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.table1)
        return [array1 count];
    if (tableView == self.table2)
        return [array2 count];

    return 0;
}