cocoa – NSView中的Autolayout被用作NSTableView的单元格

cocoa – NSView中的Autolayout被用作NSTableView的单元格,第1张

概述我正在尝试构建类似于事物如何布局的NSTableView. 我假设他们正在做的是使用带有自定义绘制的NSTableCell的NSTableView – 或者它可能是NSSegmentedControl.我试图沿着NSTableCell路线走下去.我试图子类化NSTableCellView并绘制一个自定义单元格(这都是在init方法中进行测试); - (id)init { self = [s 我正在尝试构建类似于事物如何布局的NStableVIEw.

我假设他们正在做的是使用带有自定义绘制的NStableCell的NStableVIEw – 或者它可能是NSSegmentedControl.我试图沿着NStableCell路线走下去.我试图子类化NStableCellVIEw并绘制一个自定义单元格(这都是在init方法中进行测试);

- (ID)init {    self = [super init];    if (self) {        _checkBox = [[NSbutton alloc] init];        [_checkBox setbuttonType:NSSwitchbutton];        _textvIEw = [[NSTextVIEw alloc] init];        [self addSubvIEw:_checkBox];        [self addSubvIEw:_textvIEw];        [self setTranslatesautoresizingMaskIntoConstraints:NO];        NSDictionary *vIEws = NSDictionaryOfVariableBindings(_checkBox,_textvIEw);        [self addConstraints:                [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_checkBox]-[_textvIEw]|"                                                        options:0                                                        metrics:nil                                                          vIEws:vIEws]];    }    return self;}@end

看起来很明显,但它实际上并不起作用.我无法满足约束的错误.是否无法在子类NStableCellVIEw中使用autolayout?

解决方法 虽然您必须向表视图控制器引入一些额外的代码,但这是可能的:

- (CGfloat)tableVIEw:(NStableVIEw *)tableVIEw heightOfRow:(NSInteger)row{NStableCellVIEw *rowVIEw = [self.tableVIEw makeVIEwWithIDentifIEr: RVIssueSelectiontableRowVIEwContentKey owner: self];[rowVIEw setobjectValue: yourDataObject]; // or update your cell with the according data the way you prefer[rowVIEw setNeedsLayout: YES];[rowVIEw layoutSubtreeIfNeeded];return [rowVIEw fittingSize].height;}

这将导致单元格更新它的布局,您可以返回它所需的高度.因为这个调用可能有点贵,所以应该缓存计算的单元格高度.这个答案来自另一个我现在找不到的SO答案(当我找到它时会更新解决方案).生成约束的错误消息是因为您强制单元格的高度为x(通过表视图数据源方法).但是你的约束想要设置单元格的高度以使它们满意.两者同时都无法奏效.

总结

以上是内存溢出为你收集整理的cocoa – NSView中的Autolayout被用作NSTableView的单元格全部内容,希望文章能够帮你解决cocoa – NSView中的Autolayout被用作NSTableView的单元格所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1001070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存