gpt4 book ai didi

ios - UITableViewCell 自定义 editingAccessoryView - 未正确关闭

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:25:25 27 4
gpt4 key购买 nike

我已经实现了自定义编辑附件 View ,如我对 this 的回答中所述题。在大多数情况下,它工作得很好,但我注意到它有一个小问题。

当我在表格 View 中滚动或选择另一行时,我的自定义编辑附件不会被关闭。使用标准的编辑附件(删除按钮),可以捕获表格上其他任何地方的触摸并用于删除删除附件 View - 例如,您可以在内置的 Notes 应用程序或任何其他地方自己看到它标准的编辑附件 View 。

这一定是因为我在滑动删除模式时返回了 UITableViewEditingStyleNone。但是,如果我返回任何其他模式,则不会显示我的自定义编辑附件。

我怎样才能恢复标准编辑风格的功能,即触摸表格 View 上的任何地方都会关闭编辑附件?

单元格没有子类化,但它是从具有自定义布局的 nib 文件加载的。编辑附件 View 是 nib 文件的一部分,并通过 editingAccessoryView socket 连接。

我已经成功地实现了我想要的效果,方法是存储滑动编辑行的索引路径,如果选择了另一行或在表格上开始滚动,则将该单元格设置为退出编辑模式。但是,我想正确地做到这一点。

最佳答案

我能够解决这个问题,但遗憾的是它需要额外的跑腿工作并且不像设置几个属性那么简单。

在我的

- (UITableViewCellEditingStyle)tableView:(UITableView *)_tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

我返回 UITableViewCellEditingStyleNone 的方法,以便显示我的自定义 editingAccessoryView。在这种方法中我也这样做:

self.tableView.scrollEnabled = NO;
if(self.editingPath)
{
[[tableView cellForRowAtIndexPath:editingPath] setEditing:NO animated:YES];
}

self.editingPath = indexPath;
for (UITableViewCell *cell in [tableView visibleCells])
{
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

这会禁用滚动,然后存储我们滑动的 indexPath 以备后用。如果你滑动另一行,同时编辑一行,它会取消编辑第一行并编辑第二行,这就是苹果应用程序的行为方式。我还将所有可见单元格上的单元格 selectionStyle 设置为 UITableViewCellSelectionStyleNone。当用户在您当前正在编辑的单元格中选择另一个单元格时,这会减少蓝色闪烁。

接下来,我们需要在点击另一个单元格时关闭 accessoryView。为此,我们实现了这个方法:

-(NSIndexPath *)tableView:(UITableView *)_tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(self.editingPath)
{
UITableViewCell *c = [tableView cellForRowAtIndexPath:self.editingPath];
[c setEditing:NO animated:YES];

self.tableView.scrollEnabled = YES;
self.editingPath = nil;
for (UITableViewCell *cell in [tableView visibleCells])
{
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
}

return nil;
}

return indexPath;
}

它的作用是当有人要点击一个单元格时,如果我们正在编辑然后取消编辑该单元格并且不返回任何内容。

也为

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

我返回 YES,以便在我希望用户能够删除的单元格上启用编辑。

关于ios - UITableViewCell 自定义 editingAccessoryView - 未正确关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7699431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com