ios - 如何更新在 UITableViewCell 中添加的 View ?

标签 ios objective-c uitableview

我在做什么?

我正在向我的 UITableViewCell(未子类化)添加动态 View 。

单元层次结构:

UITableView > UITableViewCell > cell.contentView > MainView > ([Number Of PointView] + [选项 View ])

这里是:

enter image description here

当用户点击“添加另一个点”时,我将添加一个 PointView(与上面相同):

Y 位置 [ ] X 位置 [ ]

看起来像这样

enter image description here

我完成这项工作的逻辑是什么?

  • 我正在从 cell.contentView 获取 MainView
  • 然后获取添加到 MainView 中的最后两个 View (Point View 和 Options View)。
  • MainView 中添加另一个 PointView
  • 根据上一个 PointView 更新新添加的 PointView 的框架,并更新 OptionsView 的框架。
  • 调整 MainView 的高度
  • 并重新加载特定单元格。

我能够让它工作,以确认我已经为那个 MainView 记录了框架和 subview 。但是一旦我再次点击“添加另一个点”按钮,我发现 MainView 根本没有更新?

我的简单问题是,如果我有一个 MainView(我从 Cell 中获取),我可以直接更新它吗?

附言我已经有了一个很差的解决方案,就是删除 MainView 并重新创建新的——我发现这是不必要的。有什么想法吗?

最佳答案

简短的回答,是的,你可以。

cell.contentView 是一个占位符。您可能遇到的是一个完全不同的问题:UITableViewCells 被缓存,然后被系统回收和重用。

任何时候响应cellForRowAtIndexPath,基本上都需要重新设置内容。

关于ios - 如何更新在 UITableViewCell 中添加的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31488633/

相关文章:

ios - UIView 和 intrinsicContentSize

ios - 以秒为单位转换 Firebase 时间戳?

objective-c - 导入的 Objc 头文件中 #define 的未解析标识符

ios - 数据库迁移后保存核心数据时Cocoa错误134030

iPhone:UIWebview 在 safari 中打开超链接

ios - 更新多节 UITableView 的单节

Swift - 找出哪个表格 View 单元格占据了大部分屏幕

swift - 单击 UITableViewCell 时执行操作

ios - 将 CAGradientLayer 应用于单元格时,如何将其中一个单元格的 View 向前移动,使其不受渐变的影响?

iOS 8 : Does "Allow full access" allows the developer to access keystrokes from other keyboards?