【发布时间】:2014-06-27 19:46:17
【问题描述】:
我有一个 NSTableViewCell 的子类,其中包含多个控件,我需要其中一个控件的宽度来计算行的高度。
由于不允许从 tableView:heightOfRow 获取单元格,我需要考虑单元格内的 textField 的宽度和该行中的字符串来计算高度。
我想我会创建一个静态单元格,给它一个具有当前宽度的框架,让它计算并执行它的布局,并得到一个 textField 宽度的结果宽度。
这是应该让我知道“nameTextField”宽度的代码
+(float)nameTextFieldWidthForTaskTableType:(TaskTableType )type compactSize:(BOOL)compactSize totalCellWidth:(float)totalWidth{
static TaskCellView *taskCell = nil;
if (taskCell == nil) {
taskCell = [[TaskCellView alloc]initWithCompactSize:compactSize taskTableType:type identifier:@"notUsed"];
}
if (taskCell.frame.size.width != totalWidth) {
taskCell.frame = NSMakeRect(0, 0, totalWidth, 25);
[taskCell updateConstraints];
}
NSTextField *nameTextField = [taskCell viewForComponent:kTaskCellComponentName];
return nameTextField.frame.size.width;
}
单元格子视图是基于约束的。他们工作正常。但在这里,nameTextField 框架始终为零。单元格是否需要超级视图来进行布局?或者还有什么遗漏?
【问题讨论】:
标签: cocoa nstableview nslayoutconstraint