【问题标题】:UITableViewCell subclass layout in edit mode编辑模式下的 UITableViewCell 子类布局
【发布时间】:2016-05-04 20:22:06
【问题描述】:

当 tableView 进入 编辑模式 时,我在自定义单元格的布局中看到一些非常奇怪的行为。

内容视图似乎变得非常小,并移到了单元格的右侧。

左边是正常模式下的单元格,右边是编辑模式下的单元格。

有人知道这里会发生什么吗?

编辑:

可以从保管箱here获取此问题的非常简化版本的代码

【问题讨论】:

  • 你可以用这些东西创建演示项目,并通过Dropbox或驱动器提供这里,所以任何人都可以查看它并给出解决方案。
  • 如果您不向我们展示代码或布局,我们怎么知道发生了什么?
  • @Hasya:通过 dropbox 添加了一些代码
  • 是否有任何理由不在表格中使用故事板和自定义单元格本身?
  • 对于一个只有几个视图的应用程序来说,使用故事板是很好的,如果你一个人在一个项目中,但是在一个有 10 多页的应用程序中使用 git 时,故事板就变成了一场噩梦和。使用单独的 ViewController 代码要容易得多。单独 nib 中的自定义单元格是必要的,因为它们也可以在其他控制器中重用。

标签: ios swift uitableview


【解决方案1】:

在 cmets 之后编辑

尝试在下面注释掉。

cell.layoutMargins = UIEdgeInsets(top: 0, left: UIScreen.mainScreen().bounds.width, bottom: 0, right: 0)

From Apple Documentation

当行被重定位时...

...委托通过将 UITableViewCell 对象的 showsReorderControl 属性设置为 YES 来分配 tableView:cellForRowAtIndexPath: 中的控件

因为您在cellForRowAtIndexPath 中再次设置了 layoutmargins,所以它可能会覆盖已形成的辅助视图并重新绘制单元格布局。

【讨论】:

  • 附件视图的全部意义不在于它们只是缩小了单元格,从而使自动布局的执行就像屏幕更小一样?我在右侧也有一个“刚性”布局约束,但是当其他附件视图显示在右侧时,它不会搞砸单元格。
  • @Moriya 说得通。但是控制台消息和上面的修复让我明白了这一点。我刚刚在您的代码中注释掉 //cell.layoutMargins = UIEdgeInsets(top: 0, left: UIScreen.mainScreen().bounds.width, bottom: 0, right: 0) 似乎可以解决问题
  • 嗯......我们有它。出于某种原因,然后使用自动布局更改边距螺丝。你应该更新你的答案,我会给你找到答案的赏金。
  • @Moriya 确定 :)
  • 必须再等 18 个小时才能获得奖励。
【解决方案2】:

Moriya,我刚刚浏览了你的代码。我建议以下几点。 - 使用故事板 - 在表格视图中使用 customcell 本身

好像有自动布局的问题,所以在表格中使用storyboard和customcell将有助于快速弄清楚,因为一切都在一个场景中。

我已经创建了单独的代码,你可以从这里download

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多