如果我只加载一个表视图,我在视图中必须有两个表视图才能正常工作。 但是当我尝试使用下面的方法加载两个表视图时,它给出了以下异常。
未捕获的异常'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;}
答案 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;
}