问题标签 [heightforrowatindexpath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 通过单元格重用错误绘制的 UITableView 分隔符?
我正在开发一个带有故事板的 iOS 5 项目,因此在 IB 中使用动态表格单元格原型。在其中一个视图中,我有一个带有可变高度单元格的表格视图,单元格高度是根据内容的高度计算的。
tableView:heightForRowAtIndexPath:
首次显示表格视图时,为所有单元格返回正确的值。向下滚动一些项目时一切都很好,但随后出现了问题:实际的单元格似乎是正确的高度,包括它们的触摸区域,但它们的分隔符呈现在错误的位置(在单元格内部而不是它们之间)。
从测量分隔器的位置来看,似乎细胞重复使用可能与此有关。前三个单元格的分隔符正确呈现,但第四个单元格不正确。heightForRowAtIndexPath:
返回正确的高度(在本例中为 125 像素),并且其包含的子视图都在正确的位置。但是,分隔符仅呈现距离前一个分隔符 108 像素的位置,将其放置在单元格的 125 像素高区域内。
这是踢球者:108px 是第一个表格单元格的高度,现在看不见并且可能被重复使用。我没有明确的证据,但似乎表格视图忽略heightForRowAtIndexPath:
了这些单元格,只是根据重用的单元格高度呈现分隔符。
这并不能解释为什么一堆后来的较短的单元格根本没有呈现分隔符。但这就是我所要做的。
是否有解决方法、IB 设置或其他可能有帮助的方法?
uitableview - UItableviewcell 从我的 UITableViewCell 类中设置自定义高度
假设我创建了 myTableViewCell 类:
除了通过关联的 tableviewcontroller 方法 (heightForRowAtIndexPath..) 运行之外,我可以在此类中为该单元格设置默认高度吗?
ios - heightForRowAtIndexPath 加载时偶尔会崩溃,NSCoding - iOS
关于我保存数据的方式的一些信息:我有一组由用户添加和删除的视图控制器(这基本上是一个笔记应用程序,视图控制器是文件夹)。视图控制器具有应用程序需要保存的几个动态属性以及其中的注释数组,然后注释对象本身有一些需要保存的属性。视图控制器和注释当然都有适当的 NSCoding 东西,这是视图控制器上的一个,例如:
Controllers 数组属于 Singleton 类。NSCoding 让我很困惑,即使它被认为是简单的东西,但到目前为止,我只告诉 Singleton 保存 Controllers 数组就成功了——然后(成功地)保存了 View Controllers 的所有包含属性,它们的属性以及所有 Notes 的属性。这是单例中的代码:
然后我在文件夹视图控制器中多次调用 save 方法:
这将运行好几次,直到我在应用程序加载时随机崩溃。罪魁祸首是 heightForRowAtIndexPath:
我收到以下错误:
我知道“__NSCFString”和“发送到实例的无法识别的选择器”意味着在不应该存在的地方有一个字符串,因为 associatedCellIsSelected 是一个布尔值。但是,如果我只在 heightForRow 中返回“currentNote.myHeight”,我也会得到与 myHeight 相同的 __NSCF 错误,这是一个浮点数。如果我一起取出 heightForRow ,除了适当的高度定义外,一切正常。
顺便说一句,heightForRowAtIndexPath 引用的表视图是在创建并填充注释数组之后在 loadView 中创建的。我只是不明白为什么这个错误只会偶尔弹出一次(比如 5-10 次打开、保存、关闭和重新打开应用程序),看似随机 - 我找不到导致这种行为的模式。任何指针?
对不起,我是iOS编程的新手,我确定我在这里做错了很多事情。
编辑 - 此外,一旦应用程序崩溃,每次我重新打开它时它都会崩溃(除非我禁用 heightForRow),直到我卸载并重新安装它。
ios - indexPath 处的行的高度抛出 EXC 错误访问错误
因此,当我输入下面的 if 语句时,我收到了 EXC Bad Access 错误。令人沮丧的是,我已经确认 indexPath 和 tableView 指向正确的位置。此外,完全相同的 if 语句在我的代码中的其他地方在同一个实现文件中使用,没有错误。
将不胜感激。
ios - 在没有 contentView 框架的情况下计算 UITableViewCell 高度的最佳方法
概括
鉴于我们并不总是知道单元格的框架或其内容视图将是什么(由于编辑、旋转、辅助视图等),tableView:heightForRowAtIndexPath:
当单元格包含可变高度文本字段或标签?
我的其中一个UITableViewController's
包含以下演示文稿:带有 UITextView 的 UITableViewCell。
UITextView 应该和 UITableViewCell 一样宽高。
我创建了 UITableViewCell 子类,然后用 UITextView 初始化它(UITextView 是我的 UITableViewController 的私有字段)
我在 UITableViewCell 子类中实现了以下方法:
当然我实现了以下 UITableViewDataSource 方法(看!我正在使用 self.view.frame.size.width (但我真的需要 UITableViewCell contentView 框架宽度):
我也实现了以下方法(这不是那么重要,但无论如何我都会发布它,只是为了解释单元格的高度是动态的,它会在 UITextView 中更改文本后缩小或扩大)
现在,我的问题是: 加载视图后, UITableViewController 按以下顺序调用方法:(为了简化,我删除了一些,如 titleForHeaderInSection 等)
只有这样
看!我应该在 cellForRowAtIndexPath 之前返回正确的 UITableViewCell 高度!这意味着:我不知道 UITableViewCell contentView 框架。而且我无法以编程方式获得它。
此宽度可以是以下之一:
- iPhone 普通桌子,纵向
- iPhone 普通桌子,横向
- iPhone 分组表,纵向
- iPhone 分组表,横向
- 和 iPad 相同(另外 4 个值)
并且不要忘记,因为 UITableViewCell 附件类型,或者因为 UITableView 编辑状态,contentView 框架可以更小。(例如,如果我们有 UITableViewCell 与任何高度的多行 UILabel 在任何编辑状态和任何附件视图)
所以这个问题是根本的:我只是无法获得单元格 contentView 框架宽度进行约束,因为我应该在单元格布局 contentView 之前返回这个高度。(顺便说一句,这很合乎逻辑)但是这个 contentView 框架真的很重要。
当然有时我可以准确地知道这个宽度并“硬编码”它(例如:UITableViewCellAccessoryDisclosureIndicator 有 20 px 宽度,而 tableView 不能处于编辑状态,那么我可以写 self.view.frame.size.width - 20 和任务已经完成了)!或者有时 contentView 等于 UITableViewController 的视图框架!
有时我在 -tableView:heightForRowAtIndexPath: 方法中使用 self.view.frame.width 。(就像现在一样,它工作得很好,但由于分组的 UITableView 并不完美,应该减去一些常量值,它们是不同的2 个设备 * 2 个方向)
有时我在 UITableViewCell 中有一些#defined 常量(如果我确切地知道宽度)......
有时我正在使用一些虚拟的预分配 UITableViewCell (这很愚蠢,但有时非常优雅且易于使用)......
但我不喜欢那种东西。
最好的决定是什么? 也许我应该创建一些辅助类,它将使用以下参数进行初始化:附件视图、设备方向、设备类型、表视图编辑状态、表视图样式(普通、分组)、控制器视图框架和其他一些,这将包括一些常量(如分组的 tableView 偏移量等)并使用它来查找预期的 UITableViewCell contentView 宽度?;)
谢谢
xcode - UITableViewCell - heightForRowAtIndexPath - 动画速度 xcode 目标 c
更改单元格的行高时
然后,
如果表格单元格发生变化,表格单元格将动画到高度。
有没有办法控制这个动画的速度?
iphone - 具有可变行高的 UITableview 在重新排序时崩溃
似乎有一个UITableView
错误,UITableView
创建了简单并且编辑模式设置为 YES,所有行都有不同的高度。例如,
现在触摸对第二行应用程序崩溃的重新排序控制。也许这些行高强制从底部UITableView
自动滚动不可见,但应该处理它。UITableViewCell
UITableView
任何的想法…。
ios - UITableViewCell 框架高度不匹配 tableView:heightForRowAtIndexPath:
我正在构建一个具有可变高度自定义表格单元格的 UITableView,它们的高度由包含的多行 UILabel 的大小决定。我已经tableView:heightForRowAtIndexPath:
连接了委托方法并使用sizeWithFont:constrainedToSize:
.
我遇到了一个奇怪的问题:在tableView:cellForRowAtIndexPath:
调用数据源方法时,已经如上所述确定了正确的每行高度,但是单元格的框架与该高度不匹配。相反,frame.size.height
单元格的属性是表格视图的默认单元格高度(86 px,正如我在 Interface Builder 中设置的那样,包含的 UILabel 只有一行文本时的正确高度),而不是高度确定tableView:heightForRowAtIndexPath:
该索引路径的正确性。
我正在cellForRowAtIndexPath:
使用出队来生产单元格,也就是说,
那么,无论 iOS 在幕后做什么,出队似乎都没有设置单元格的 frame 属性以匹配计算的高度。这本身并不令人惊讶,出队关注的是单元格实例,而不是它们的几何形状。但是,单元格被正确渲染,因此 height 属性被设置在某处,但它发生在cellForRowAtIndexPath:
.
所以:当我最初填充表格视图时,cell.frame.size.height
所有单元格都是 86,因为它们在我向下滚动列表时第一次出现。由于正确的几何图形是在cellForRowAtIndexPath:
每行显示之前的第一个之后的某个时间设置的,因此当我向上滚动时,height 属性对于重用后返回视图的每个单元格都是正确的。
在此之后,我可以随意来回滚动表格视图,并且从那时起,每个单元格的高度属性保持正确。
在任何基于出队的重用发生之前,第一次获得正确单元格高度的正确方法是什么?我需要这个来重新定位表格单元格的子视图。我是否需要手动调用heightForRowAtIndexPath:
,cellForRowAtIndexPath:
然后手动设置新创建的 CustomCell 实例的框架以匹配该高度?这似乎是多余的,我需要创建一种机制来检测第一次创建单元时帧高度错误的时间与稍后以正确帧高度出列的时间,以避免这种冗余。
因此,如果有人可以阐明这背后的逻辑,我将不胜感激。
ios - heightForRowatIndexPath 不设置单元格高度
我正在尝试创建一个包含 3 个组的分组表视图,每个组都有不同高度的单元格。我在我的 Storyboard 中设置了 3 个具有适当高度的原型单元,并设置了我的 UITableViewController 以返回每行的适当高度。但是由于某种原因,我的所有单元格出现在屏幕上时都只有 1 个像素高。
我已经逐步完成了代码,并为每一行返回了正确的高度和单元格。我还验证了每个单元格的框架在返回之前是正确的。然而,调用rectForRowAtIndexPath
显示rect
每行只有 1 个像素高。
当使用恒定的像元高度时,这个问题就完全消失了。在这种情况下,单元格显示完美,其中一些太短/太高,因为它们应该是可变高度。
有什么想法吗?我想了解在使用heightForRowAtIndexPath
.
heightForRowAtIndexPath 的代码:
iphone - AFNetworking setImageWithURL - 获取返回图像的高度?
我希望在自定义 tableviewcell 中设置图像,并在 heightForRowAtIndexPath 方法中使用返回图像的高度。
无论如何要将此返回的数据放入 heightForRowAtIndexPath 方法中吗?目前我正在使用本地字典并按以下方式进行设置:
非常感谢任何有关更有效方法的指针。
干杯尼克