0

正常に動作している 1 つのテーブル ビューのみをロードしている場合、ビューに 2 つのテーブル ビューが必要です。しかし、以下の方法を使用して両方のテーブルビューを読み込もうとすると、以下の例外が発生します。

キャッチされない例外 '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;}
4

1 に答える 1

1

おそらく、配列の 1 つにアイテムが含まれているよりも大きなインデックスでオブジェクトを要求します。どのテーブルが呼び出されているかをチェックし、データ配列に従って適切な値を返すメソッドを – numberOfSectionsInTableView:正しく実装しましたか? UPDATE メソッドを次のように編集します。– 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;
}
于 2012-04-20T09:32:20.677 に答える