
当我在NStableVIEw上调用-reloadData时,它会崩溃:
Unable to simultaneously satisfy constraints:( "<NSautoresizingMaskLayoutConstraint:0x105cb8bf0 h=--& v=--& V:[NStableRowVIEw:0x105ca7020(0)]>","<NSautoresizingMaskLayoutConstraint:0x10596aa30 h=--& v=-&- V:[GrouptableRowVIEw]-(2)-| (names: GrouptableRowVIEw:0x100185860,'|':NStableRowVIEw:0x105ca7020 )>","<NSautoresizingMaskLayoutConstraint:0x1058d9770 h=--& v=-&- V:|-(1)-[GrouptableRowVIEw] (names: GrouptableRowVIEw:0x100185860,'|':NStableRowVIEw:0x105ca7020 )>")Will attempt to recover by breaking constraint <NSautoresizingMaskLayoutConstraint:0x10596aa30 h=--& v=-&- V:[GrouptableRowVIEw]-(2)-| (names: GrouptableRowVIEw:0x100185860,'|':NStableRowVIEw:0x105ca7020 )>
我无法关闭所涉及的任何视图上的自动调整大小掩码转换,因为它们的约束由NStableVIEw管理.很明显,约束是冲突的,因为NStableRowVIEw不可能具有0高度,同时仍然满足GrouptableRowVIEw上的其他两个约束,这些约束指定了supervIEw(行视图?)之间的强制填充.我不知道如何解决这个问题,我们将非常感谢任何见解.谢谢!
更新:
我找到了一个解决方法.问题是,由于某种原因,在表视图上调用-reloadData时,NStableRowVIEw的帧大小为{0,0}.我覆盖了-setFrameSize:在NStableRowVIEw子类中,只在大小不是{0,0}时才将消息传递给响应者链.
- (voID)setFrameSize:(NSSize)newSize{ if (!NSEqualSizes(newSize,NSZeroSize)) [super setFrameSize:newSize];} 要使用子类,请实现NStableVIEwDelegate的-tableView:rowViewForRow:方法以返回自定义子类的实例.
- (NStableRowVIEw *)tableVIEw:(NStableVIEw *)tableVIEw rowVIEwForRow:(NSInteger)row{ ID rowVIEw = [[GrouptableRowVIEw alloc] init]; // configure any custom propertIEs return rowVIEw;} 如果表视图完全在IB中设计,您只需将新的NSVIEw拖到表视图中,并将其自定义类设置为NStableRowVIEw子类,并将其用户界面项标识符更改为NStableVIEwRowVIEwKey
解决方法 我有同样的问题,它总是让我疯狂..我已经使用你的代码解决了它,但是继承了NStableRowVIEw而不是NStableCellVIEw.要自动让表使用自定义行视图,请在表中添加自定义NSVIEw.将其类设置为自定义行视图,重要的是将其标识符设置为NStableVIEwRowVIEwKey.
使用此特殊标识符,表自动将其用作行视图.
总结以上是内存溢出为你收集整理的cocoa – 调用reloadData时NSTableView的不满意约束全部内容,希望文章能够帮你解决cocoa – 调用reloadData时NSTableView的不满意约束所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)