自定义editingAccessoryView表现不可预测

时间:2011-07-05 16:11:25

标签: iphone objective-c ios ios4

好的,首先关闭 - 我希望我的单元格在编辑模式下看到我的UItableView(带有一些更好的按钮):

enter image description here

然而 - 这就是它现在的样子:

enter image description here

我的问题是我的自定义EditingAccessoryView只出现在我最初创建的单元格上,并且出现了那些圆形的东西(那些叫做什么?)。哪个做得不好。

现在,我的代码看起来像这样(这似乎是执行此操作的常用方法,例如在此问题中看到:How to add Custom EditingAccessoryView for UITableView?

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.editingAccessoryView = AccessoryView;
        AccessoryView.backgroundColor = [UIColor clearColor];
    }

我已经读过,即使- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath返回“NO”,您也可以通过滑动调用自定义editingAccessoryView。然而,我无法实现这一目标。

所以,总结一下;我希望我的editingAccessoryView显示在所有单元格中 - 如果可能,请删除红色圆圈。或者,或者,当我滑动时调用我的editingAccessoryView - 当用户执行此操作时调用哪个方法?

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

我建议你继承表格单元格并覆盖以下方法

- (void)layoutSubviews
{
    if([self isEditing])
    {    
        // your custom stuff
       [self.contentView addSubview:myButton];
    }
}

答案 1 :(得分:0)

而不是在cellForRowAtIndexPath中设置所有这些....执行此操作。

cellForRowAtIndexPath

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

并在

中设置您的配件视图
 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 {
     if (editingStyle == UITableViewCellEditingStyleDelete) {
         // Delete the row from the data source
         NSLog(@"Am I Editing");

         UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

         selectedCell.editingAccessoryView = AccessoryView;
         AccessoryView.backgroundColor = [UIColor clearColor]
     }   
     else if (editingStyle == UITableViewCellEditingStyleInsert) {
         // Create a new instance of the appropriate class,
         //   insert it into the array, and add a new row to the table view
     }   
 }

答案 2 :(得分:0)

您需要为每个单元格创建一个新的附件。

答案 3 :(得分:0)

要删除红色圆圈,您可以在

中返回UITableViewCellEditingStyleNone
- (UITableViewCellEditingStyle)tableView:(UITableView*)tableView editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath;

但在这种情况下,该圈子的空白空间仍然存在。我几乎可以肯定,它也可以删除。

  

我的问题是我的自定义EditingAccessoryView只出现在我第一次创建的单元格上

尝试为每个单元格实例化新的AccessoryView,而不是使用相同的单元格。