如何在组UITableView中添加新部分,如添加新行

时间:2013-09-17 06:09:38

标签: ios uitableview insert

我一直在谷歌搜索,但我找不到任何直接的教程或答案,所以我决定问。

我理解并能够使用insertRowsAtIndexPath:withRowAnimation向组uitableview插入新行。

我现在要做的不是插入新行,而是要插入新的部分,每个部分包含2行。

我该怎么做,或者我应该研究什么?


我尝试了什么:

NSMutableArray self.objectArray

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.objectArray.count;
}

tableView:cellForRowAtIndexPath中,我这样做了:

UITextField *itemNameTextField = (UITextField *)[cell viewWithTag:100];
    NSString *itemName = self.objectArray[indexPath.section][@"itemName"];
    [itemNameTextField setText:itemName];
    [itemNameTextField addTarget:self action:@selector(updateItemName:) forControlEvents:UIControlEventEditingChanged];

我有一个条形按钮项,在点按时调用addItemBarBtnTapped:

- (IBAction)addItemBarBtnTapped:(id)sender
{
    // Create item object.
    NSMutableDictionary *itemObject = [[NSMutableDictionary alloc] init];
    itemObject[@"itemName"] = [NSString stringWithFormat:@"Item %d", self.billItemsArray.count+1];
    itemObject[@"itemPrice"] = @"0";
    itemObject[@"itemSharersArray"] = [[NSMutableArray alloc] init];

    // Add itemObject to objectArray, which reflects the new number of sections, and reloadData to reflect changes.
    [self.objectArray addObject:itemObject];
    [self.tableView reloadData];
}

这就是我目前正在做的事情,它有效,因为我看到我的单元格中textFields中的值具有正确的值,例如第1项,第2项等(这些值设置并存储在addItemBarBtnTapped的数据源中。

但是,我不认为这是“将部分添加到tableView”的正确方法,它缺少“动画”,我希望每次添加2行,每次添加部分。


我找不到与我的问题相关的答案,也没有关于在互联网上添加章节的任何教程,所以我真的很感谢你们的帮助!

谢谢!

1 个答案:

答案 0 :(得分:4)

试试这段代码:

 int indexOfNewSection = self.objectArray.count; 
    [self.tableview beginUpdates];
    [self.tableview insertSections:[NSIndexSet indexSetWithIndex:indexOfNewSection]
                  withRowAnimation:UITableViewRowAnimationTop];

    // Update data model
     itemObject[@"itemName"] = [NSString stringWithFormat:@"Item %d", self.billItemsArray.count+1];
        itemObject[@"itemPrice"] = @"0";
        itemObject[@"itemSharersArray"] = [[NSMutableArray alloc] init];
    [self.objectArray insertObject:sectionObj atIndex:indexOfNewSection];

    [self.tableview endUpdates];