Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在UITableView中编辑时如何防止单元格宽度的扩展

在UITableView中编辑时如何防止单元格宽度的扩展
EN

Stack Overflow用户
提问于 2013-08-26 06:21:54
回答 1查看 728关注 0票数 7

如果您在iPad联系人应用程序中注意到,当您点击"+“编辑图标以添加新地址时,当图标消失时,单元格不会向左扩展(见下面的第一个屏幕截图)。我试图做一些类似的事情,但没有运气(见下面的第二个屏幕截图)。我尝试使用建议的这里解决方案,但没有起作用。

为了记录在案,我没有试图复制实际的联系人应用程序或与联系人集成。我们正在做一些无关的事情,我的设计师只是想遵循这个模式,所以做一些POC工作,看看我能做些什么。

编辑-另一个问题,为了验证我的想法,在这里的联系人应用程序中,当点击"+“图标时,这个单元格被设置为不再编辑,这些文本字段被添加到单元格中,标签被更改,然后调用reloadData,对吗?

编辑-谢谢你的建议蒂姆,我快到了!我实际上已经计算出了其中的1/2,但后来遇到的问题是,"+“图标没有显示出来,只是突然消失了。所以我加入了reloadRows..。调用commitEditingStyle,但现在整个单元格消失了。这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    UITableViewCellEditingStyle editingStyle = UITableViewCellEditingStyleNone;
    if (self.showEditingIcon) {
        editingStyle = UITableViewCellEditingStyleInsert;
        self.showEditingIcon = NO;
    }
    return editingStyle;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    //    tableView.editing = NO;
    //    tableView.editing = YES;
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

你可以从我的注释行中看到我原来的工作,但就像我说的,没有动画-- "+“按钮突然消失了。如果我尝试调用tableView setEditing:NO动画:是的,它将无法工作。当我试图将这些调用放在一个UIView动画块中时,它看起来不太好--可以看到单元格暂时向左和向后移动。然而,现在,随着重新加载调用,单元格完全消失。目前,我没有对我的单元格进行任何更改(例如,我没有添加文本字段,等等)因为我只想使"+“按钮动画化,而不是让单元格在第一次迭代时展开左边的工作。

任何帮助都非常感谢。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-26 06:51:17

诀窍是始终处于编辑模式,使单元格缩入保持不变。加载单元格时,您可以决定它所处的状态,并返回适当的编辑样式,即“插入”样式或“无”:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    BOOL shouldShowInsertButton = ...;//check internal state for cell
    return shouldShowInsertButton ? UITableViewCellEditingStyleInsert : UITableViewCellEditingStyleNone;
}

然后,当点击编辑按钮时,更新内部状态并重新加载单元格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...;//update internal state for cell
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

编辑

这是一个工作的样本工程

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18446407

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文