Ios UITableViewCellEditingStyle不';t显示红色/绿色减号圆圈

Ios UITableViewCellEditingStyle不';t显示红色/绿色减号圆圈,ios,objective-c,Ios,Objective C,我有代码工作,允许用户在按下标准编辑按钮时编辑表中的某些项目(包括删除和插入新项目) 这一切都按预期进行(我可以通过滑动删除,当按下“编辑”时会出现“添加”按钮),但即使在正确的编辑样式模式下,也不会显示红色/绿色圆圈 以下是我的表格编辑代码: - (void)viewDidLoad { [super viewDidLoad]; tableData = ptrBookmarks; numberOfSections = 1; // for editing: initia

我有代码工作,允许用户在按下标准编辑按钮时编辑表中的某些项目(包括删除和插入新项目)

这一切都按预期进行(我可以通过滑动删除,当按下“编辑”时会出现“添加”按钮),但即使在正确的编辑样式模式下,也不会显示红色/绿色圆圈

以下是我的表格编辑代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    tableData = ptrBookmarks;

    numberOfSections = 1; // for editing: initial number of sections

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    self.navigationItem.rightBarButtonItem = self.editButtonItem;

    //allow row selection during editing.
    //if the "Add Row" row is selected we can trigger an insert.
    //rather than forcing the using to click the (+) icon directly
    self.aTableView.allowsSelectionDuringEditing = YES;
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.

    if ([self isEditing]) // the current view is in editing mode, return count + an extra row
        return [tableData count] + 1;
    else // return count
        return [tableData count];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

    //if number of rows is greater than the total number of rows in the data set
    //and this view is in editing mode.
    //Initialize the cell for "Add Row"
    //there will be an extra row once SetEditing: is called
    if(indexPath.row >= ptrBookmarks1.count && [self isEditing]){
        cell.textLabel.text = @"Add Row";
    }
    else {
        cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
    }

    return cell;
}


//VIEW CONTROLLER METHOD: IMPORTANT
//this is a method of the view controller
//if we use apple's editing button as follows:
//self.navigationItem.rightBarButtonItem = self.editButtonItem
//then this method will be called automatically for us.
//if we are using a button callback or similar method,
//then we need to call setEditing: manually on the view
-(void) setEditing:(BOOL)editing animated:(BOOL)animated{

    //wrap our code in an if statement
    //only run the code if we are not swipe deleting a row.
    //if we were called due to a swipeDelete action, ignore it
    if(isSwipeDeleting == NO){
        //call parent
        [super setEditing:editing animated:animated];


        //if editing mode
        if(editing){
            //batch the table view changes so that everything happens at once
            [self.aTableView beginUpdates];
            //for each section, insert a row at the end of the table
            for(int i = 0; i < numberOfSections; i++){
                //create an index path for the new row
                NSIndexPath *path = [NSIndexPath indexPathForRow:tableData.count inSection:i];
                //insert the NSIndexPath to create a new row. NOTE: this method takes an array of paths
                [self.aTableView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationAutomatic];
            }
            //animate the changes now
            [self.aTableView endUpdates];
        }else{
            //batch the table view changes so that everything happens at once
            [self.aTableView beginUpdates];
            //for each section, insert a row at the end of the table
            for(int i = 0; i < numberOfSections; i++){
                //create an index path for the new row
                NSIndexPath *path = [NSIndexPath indexPathForRow:tableData.count inSection:i];
                //insert the NSIndexPath to create a new row. NOTE: this method takes an array of paths
                [self.aTableView deleteRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationAutomatic];
            }
            //animate the changes now
            [self.aTableView endUpdates];
        }
    }
}


//DELEGATE METHOD:
//this method will be called for every row and allows us to set the
//editing syle icon(Delete,Insert)
-(UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

    // Detemine if it's in editing mode
    //if (self.editing) {
    //use the + icon(add icon) on row
    //if this is the additional row created in setEditing:animated:
    if(indexPath.row >= tableData.count){
        return UITableViewCellEditingStyleInsert;
    }
    else{
        //use the delete icon on this row
        return UITableViewCellEditingStyleDelete;
    }
    //}
    //else
    //return UITableViewCellEditingStyleNone;
}

//handle the deletion insertion
//this method is called when the delete or insert icon has been press.
//we should update our dataSource by inserting or removing the selected INDEX
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //remove row from datasource
        [tableData removeObjectAtIndex:indexPath.row];
        //remove the row in the tableView because the deleteIcon was clicked
        [self.aTableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        //add a new row to the datasource
        [tableData addObject:@"New Icon"];
        //insert a row in the tableView because the plusIcon was clicked.
        [self.aTableView insertRowsAtIndexPaths:@[indexPath]
                               withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}


//if we are in editing mode we do not want to perform Seque Transition
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if ([identifier isEqualToString:@"MyDetailView"] && [self isEditing]) {
        return NO;
    }
    return YES;
}


//this method is called when the user swipes to delete a row.
- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{
    isSwipeDeleting = YES;//user just swipe to delete a row
}
//when the user cancel the swipe or click the delete button
//this method is call
- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath{
    isSwipeDeleting = NO;//swipe to delete ended. No longer showing the DELETE button in cell
}



// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {

    NSString *item;

    item = [[tableData objectAtIndex:fromIndexPath.row] retain];
    [tableData removeObjectAtIndex:fromIndexPath.row];
    [tableData insertObject:item atIndex:toIndexPath.row];

    [item release];
}




// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}

#pragma mark - Table view delegate

//DELEGATE METHOD:
//the user selected a row
//In order for the user to perform an INSERTION action on a row,
//they have to click the + icon icon. We can implement this method
//so that they can click anywhere on the add row to add a new row
//tableView.allowsSelectionDuringEditing = YES; must be set
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //deselect the selected row with animatiion
    [self.aTableView deselectRowAtIndexPath:indexPath animated:YES];

    //if the selected  row was the "Add Row" row call tableView:commitEditingStyle:
    //to add a new row
    if (indexPath.row >= tableData.count && [self isEditing]) {
        [self tableView:tableView commitEditingStyle:UITableViewCellEditingStyleInsert forRowAtIndexPath:indexPath];
    }
    else { // otherwise do regular table item selection
        [self.delegate didTapBookmarksTable:[tableData objectAtIndex:indexPath.row]];
    }

}
-(void)viewDidLoad
{
[超级视图下载];
tableData=ptrBookmarks;
numberOfSections=1;//用于编辑:节的初始数量
//取消对以下行的注释,以在此视图控制器的导航栏中显示编辑按钮。
self.navigationItem.rightBarButtonItem=self.editButtonItem;
//在编辑期间允许行选择。
//如果选择了“添加行”,我们可以触发插入。
//而不是强制用户直接单击(+)图标
self.aTableView.allowselectionduringediting=YES;
}
#pragma标记-表视图数据源
-(NSInteger)表格视图中的节数:(UITableView*)表格视图
{
//返回节数。
返回1;
}
-(NSInteger)表视图:(UITableView*)表视图行数节:(NSInteger)节
{
//返回节中的行数。
如果([self isEditing])//当前视图处于编辑模式,则返回count+一个额外的行
返回[tableData count]+1;
else//返回计数
返回[表数据计数];
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
UITableViewCell*单元格=[tableView dequeueReusableCellWithIdentifier:@“cell”];
如果(单元格==nil){
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault重用标识符:@“cell”];
}
//如果行数大于数据集中的总行数
//此视图处于编辑模式。
//初始化“添加行”的单元格
//调用SetEditing:后将有一个额外的行
if(indexath.row>=ptrBookmarks1.count&&[self-isEditing]){
cell.textlab.text=@“添加行”;
}
否则{
cell.textlab.text=[tableData objectAtIndex:indexath.row];
}
返回单元;
}
//视图控制器方法:重要
//这是视图控制器的一种方法
//如果我们使用苹果的编辑按钮,如下所示:
//self.navigationItem.rightBarButtonItem=self.editButtonItem
//然后,我们将自动调用此方法。
//如果我们使用按钮回调或类似方法,
//然后我们需要在视图上调用setEditing:manually
-(void)设置编辑:(BOOL)编辑动画:(BOOL)动画{
//将代码包装在if语句中
//只有在不滑动删除行时才运行代码。
//如果由于swipeDelete操作而调用我们,请忽略它
如果(IssweepDeleting==否){
//打电话给家长
[超级设置编辑:编辑动画:动画];
//如果编辑模式
如果(编辑){
//批处理表视图的更改,以便所有事情都立即发生
[self.aTableView开始更新];
//对于每个部分,在表的末尾插入一行
对于(int i=0;i=tableData.count){
返回UITableViewCellEditingStyleInsert;
}
否则{
//使用此行上的“删除”图标
返回UITableViewCellEditingStyleDelete;
}
//}
//否则
//返回UITableViewCellEditingStyleNone;
}
//处理删除和插入
//当按下删除或插入图标时,调用此方法。
//我们应该通过插入或删除所选索引来更新数据源
-(void)tableView:(UITableView*)tableView提交的编辑样式:(UITableViewCellEditingStyle)行的编辑样式索引路径:(NSIndexPath*)索引路径{
如果(editingStyle==UITableViewCellEditingStyleDelete){
//从数据源中删除行
[tableData removeObjectAtIndex:indexath.row];
//删除tableView中的行,因为已单击Delete图标
[self.aTableView deleteRowsAtIndexPaths:@[indexPath]带RowAnimation:UITableViewRowAnimationAutomatic];
}
else if(editingStyle==UITableViewCellEditingStyleInsert){
//向数据源添加新行
[tableData addObject:@“新建图标”];