我需要插入和删除选项,所以......
self.navigationItem.rightBarButtonItem = self.editButtonItem;
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addItem:)];
self.navigationItem.leftBarButtonItem = addButton;
到目前为止,这一切都很好。我完成了“删除”编程,但“插入”有问题
- (void)addItem:sender {
}
我在addItem中添加什么来启动“编辑模式”并将我的EditingStyle更改为UITableViewCellEditingStyleInsert?在Apple库中看到的iteminputcontroller到底是什么?对此没有任何解释,帮助在线模糊:(
答案 0 :(得分:5)
在tableView
方法中调用addItem
的setEditing函数。
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
应该如下。
- (void)addItem:sender {
[myTableview setEditing:YES animated:YES];
}
从UITableViewCellEditingStyleInsert
方法返回editingStyleForRowAtIndexPath
。
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
if(someCondtion){
return UITableViewCellEditingStyleInsert;
} else {
return UITableViewCellEditingStyleDelete;
}
}
根据编辑操作删除或插入更新数据模型。
- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//put code to handle deletion
[myTableView reloadData];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
//put code to handle insertion
[myTableView reloadData];
}
}
答案 1 :(得分:2)
利用内置功能,首先设置:
tableView.dataSource = self;
tableView.delegate = self;
并添加到您的
- (void)addItem:sender {
[tableview setEditing:YES animated:YES];
}
然后,只需覆盖此方法
- (void)tableView:(UITableView *)tableView commitEditingStyle: UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
// If user deletes
if (editingStyle == UITableViewCellEditingStyleDelete)
{
//DELETE THE KEY FROM YOUR DATASOURCE AND THEN:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade]; //NICE EFFECT
}
else if(editingStyle == UITableViewCellEditingStyleInsert)
{
//ADD THE KEY TO YOUR DATASOURCE AND THEN:
[tableView reloadData]; //THIS JUST RELOADS THE TABLE WITH YOUR DATASOURCE UPDATED
}
}
答案 2 :(得分:1)
拥有 + 按钮没有太大价值,如果它会像'编辑'按钮那样......对吗?因此,您的addItem:
方法应实现用于显示新视图的代码,即呈现视图控制器以输入要添加的项目的详细信息。 (我的例子来自Apple的示例代码):
- (void)addItem:(id)sender {
// ItemInputController is a view controller used to display textFields, etc.
// whatever you need for your new item... You have to write it, name it however you want
ItemInputController *itemInputController = [[ItemInputController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:itemInputController];
[[self navigationController] presentModalViewController:navigationController animated:YES];
[navigationController release];
[itemInputController release];
}
否则,要使用UITableViewCellEditingStyleInsert
,您需要使用editingStyle = UITableViewCellEditingStyleInsert
实际配置一个单元格(例如,表格中的最后一个单元格)。点击“编辑”按钮进入编辑模式。当用户点按“添加项目”单元格时,您将调用与上述addItem:
方法相同的代码。
我希望这能为你解决问题。