私のアプリケーションでは、を使用していUITableview
ます。そのTableViewで、辞書を含む配列を表示しています。TableViewの最後の行には、ユーザーがさらにイベントをロードすることを示す1つのボタンが含まれています。ユーザーがボタンをクリックした場合、サービスからデータを取得し、データをにロードする必要がありますUITableview
。
その目的のために、私は以下のコードのようにそれを実装しようとしています:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section**
{
if (ifMore)
{
return [totalArray count];
}
else
{
return [tableArray count];
}
return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
int count =[tableArray count];
if (ifMore)
{
count= [totalArray count];
}
if (indexPath.row==count-1)
{
return 96;
}
return 56;
}
行インデックスメソッドのセルは次のとおりです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
TableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [[TableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];
if (ifMore)
{
dict=[totalArray objectAtIndex:indexPath.row];
}
else
{
dict =[tableArray objectAtIndex:indexPath.row];
}
cell.hostLabel.text=[dict objectForKey:@"Event_Name"];
cell.startTime.text=[dict objectForKey:@"Event_Startdate"];
cell.endTime.text= [dict objectForKey:@"Event_Enddate"];
cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
int count=[tableArray count];
if(ifMore)
{
count=[totalArray count];
}
if (indexPath.row==count-1)
{
[cell.contentView addSubview:moreBtn];
}
return cell;
}
私はこのようなコードを使用しています。今、私の主な問題は、データを通常ロードしているときに、スクロールをロードしているときに問題が発生しないことです。それは完璧に機能します。しかし、TableViewセルのボタンをクリックして、サービスからデータを取得し、データをリロードするとします。正常に動作します。しかし、スクロールしているとクラッシュします。私はこれで立ち往生しています。
クラッシュメッセージは次のとおりです。
2012-12-20 12:22:49.312 IAGDapp[3215:15e03] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 4 beyond bounds [0 .. 3]'
*** First throw call stack:
(0x4b5052 0x21c7d0a 0x4a1db8 0x2b9e6 0x2b7d2 0xc80a57 0xc80b92 0xc8669e 0x7402db 0x7401af 0x489966 0x489407 0x3ec7c0 0x3ebdb4 0x3ebccb 0x1f6b879 0x1f6b93e 0xc2ba9b 0x28e0 0x2105 0x1)
terminate called throwing an exceptionsharedlibrary apply-load-rules all
kill
エラーを見つけるのを手伝ってもらえますか?