iOS開発初心者です。したがって、あなたの答えができるだけ詳細になるといいでしょう。私の問題は次のとおりです。2 番目のセクションのセルに常に「新しい行を追加」と表示させたいのです。このセルをクリックすると、新しい行が一番上に追加されます。私の現在のコードは
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (section == 0) {
return 1;
}
else {
return [entries count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"Cell";
static NSString *todayTableIdentifier = @"Notification";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
UITableViewCell *todaycell = [tableView dequeueReusableCellWithIdentifier:todayTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
NSString *entry;
if (indexPath.section == 0) {
entry = [notifications objectAtIndex:indexPath.row];
cell = todaycell;
} else {
entry = [entries objectAtIndex:indexPath.row];
}
cell.textLabel.text = entry;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int selectedRow = indexPath.row;
NSLog(@"row pressed %d", selectedRow);
NSArray *paths = [NSArray arrayWithObject:
[NSIndexPath indexPathForRow:2 inSection:2]];
if (selectedRow == 0)
{ [entries addObject:@"a new Entry"];
[[self tableView] insertRowsAtIndexPaths:paths
withRowAnimation:UITableViewRowAnimationTop];
}
else {
[[self tableView] deleteRowsAtIndexPaths:paths
withRowAnimation:UITableViewRowAnimationTop];
}
}
残念ながら、私のアプリは頻繁にクラッシュします。
2013-04-11 16:52:39.717 MyStore[12924:c07] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2380.17/UITableView.m:861
2013-04-11 16:52:39.718 MyStore[12924:c07] *** Terminating app due to uncaught exception ' NSInternalInconsistencyException', reason: 'attempt to delete row 2 from section 2, but there are only 2 sections before the update'
*** First throw call stack:
(0x1faa012 0x13e7e7e 0x1fa9e78 0xb6d665 0xbb43c 0xca1f6 0xca271 0x5c6b 0xcb285 0xcb4ed 0xad55b3 0x1f69376 0x1f68e06 0x1f50a82 0x1f4ff44 0x1f4fe1b 0x1f047e3 0x1f04668 0x1bffc 0x21bd 0x20e5 0x1)
libc++abi.dylib: terminate called throwing an exception