我一直在谷歌上搜索,但找不到任何直接的教程或答案,所以我决定问一下。
我理解并且能够使用 insertRowsAtIndexPath:withRowAnimation 将新行插入到组 uitableview。
我现在想做的不是插入新行,而是插入新的部分,每个部分包含 2 行。
我该怎么做,或者我应该研究什么?
我尝试过的:
一个 NSMutableArray self.objectArray .
- (NSInteger)numberOfSectionsInTableViewUITableView *)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 actionselector(updateItemName forControlEvents:UIControlEventEditingChanged];
我有一个条形按钮项目,点击时调用 addItemBarBtnTapped: :
- (IBAction)addItemBarBtnTappedid)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 行。
我找不到与我的问题相关的答案,也没有任何关于在 Internet 上添加部分的教程,所以我非常感谢你们的帮助!
谢谢!
Best Answer-推荐答案 strong>
试试这个代码:
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];
关于ios - 如何在 UITableView 组中添加新部分,如添加新行,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/18842434/
|