gpt4 book ai didi

swift - 如何对齐 NSTableCellView 中的对象

转载 作者:行者123 更新时间:2023-11-28 13:47:47 24 4
gpt4 key购买 nike

我尝试将 NSPopUpButton 垂直放置在表格单元格的顶部 - 但没有成功。它保持垂直居中:

Picture of table with "misaligned" popups

返回 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 {…}
}

有人能指出我正确的方向吗?

最佳答案

我建议您对该列的表格单元格进行子类化,将按钮嵌入到 NSView 中,并向子类中添加一个“customizeCell”函数。当从委托(delegate)中调用该函数时,该函数可以找到表格行的实际行高,相应地调整 View 大小,并根据您喜欢的自动布局相对于您的 View 定位按钮。

此外,虽然我认为这不会导致您的问题,但除非您为了简洁起见将其排除在问题之外,否则您没有使用“makeView”。

通常,

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?{

从以下位置获取其单元格:

let vw = tableView.makeView(withIdentifier: tableColumn!.identifier, owner: self)

Cocoa 从 nib 构建单元格,并将其排队以供重用(这可能只在您的表格很长时才重要)

希望我在正轨上,在这里。

关于swift - 如何对齐 NSTableCellView 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com