我尝试将NSPopUpButton垂直放置在表格单元的顶部,但没有成功。它保持垂直居中:
返回NSPopUpButtons的代码:
extension ViewController:NSTableViewDataSource, NSTableViewDelegate{
func tableViewColumnDidResize(_ notification: Notification) {…}
func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat {…}
func numberOfRows(in tableView: NSTableView) -> Int {
return tableViewData.count
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?{
if tableColumn?.identifier.rawValue == "value" {
…
} else if (tableColumn?.identifier.rawValue == "type") {
let typePopUp = NSPopUpButton()
typePopUp.addItems(withTitles:["Data", "String", "Number", "Boolean"])
typePopUp.isBordered = false
return typePopUp
} else {…}
}
}
有人可以指出我正确的方向吗?
答案 0 :(得分:0)
我建议您将该列的表单元格子类化,将按钮嵌入到NSView中,然后向该子类添加“ customizeCell”函数。 从委托调用该函数时,它可以找到表格行的实际行高,并相应地调整视图的大小,并使用自动布局相对于视图放置按钮。
此外,尽管我认为这不是造成您的问题的原因,但除非您为简洁起见而将其排除在问题之外,否则您不会使用“ makeView”。
通常
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?{
从以下位置获取其单元格:
let vw = tableView.makeView(withIdentifier: tableColumn!.identifier, owner: self)
Cocoa从笔尖构建单元格,并将其排队以供重用(这可能仅在表很长的情况下才重要)
希望我在这里。