我有一个包含 2 个部分的 tableView。我现在可以容纳 3 行,第一部分的前 2 行和第二部分的 1 行。每当我收到来自服务器的文本时,我都希望在第二部分的第一个位置插入一个新行。像这样:
--------- ---------
| 0-0 | | 0-0 |
--------- ---------
| 0-1 |------>| 0-1 |
--------- ---------
| 1-0 | |new 1-0|
--------- ---------
| 1-1 |
---------
我尝试使用表视图的 insertRowsAtIndexPath 和 reloadSections 方法,但它们都在节的开头添加了一个新行,但也复制了第一节的行(在这种情况下为 2)。像这样:
--------- ---------
| 0-0 | | 0-0 |
--------- ---------
| 0-1 |------>| 0-1 |
--------- ---------
| 1-0 | | 0-0 |
--------- ---------
| 0-1 |
---------
|new 1-0|
---------
| 1-1 |
---------
我在通过 NSNotificationCenter 接收通知时添加了一个新行,这是代码片段:
-(void)receiveNotification:(NSString *)notification
{
[myArray1 insertObject:notification atIndex:0];
[self.tblView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
// Alternate Code
// [self.tblView beginUpdates];
// [self.tblView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:1]] withRowAnimation:UITableViewRowAnimationNone];
// [self.tblView endUpdates];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0)
return [myArray0 count];
else
return [myArray1 count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0)
{
static NSString *cellId = @"cell0";
Section0 *cell0 = [tableView dequeueReusableCellWithIdentifier:cellId];
//Manage first section cell
return cell0;
}
else
{
static NSString *cellId = @"cell1";
Section0 *cell1 = [tableView dequeueReusableCellWithIdentifier:cellId];
// Manage second section cell
return cell1;
}
}