NSPopover 内的 NSTableview 看起来与独立的不同

2024-04-03

我创建了一个ListView类,这是一个非常简单的Tableview。

如果我用 IB 实例化它,一切看起来都很好。 如果我以编程方式实例化它也是一样。

如果我在一个内部以编程方式实例化它NSPopover,我的桌子的每一行都有浅灰色背景。

这是从哪里来的?

这里是代码:

class ViewController: NSViewController {
    let popover = NSPopover()

    @IBOutlet weak var label: NSTextField!
    @IBAction func bu1(_ sender: Any) { 
        popover.show(relativeTo: label.visibleRect, of: label, preferredEdge: NSRectEdge.maxY)
    }

    override func viewDidLoad() { 
        super.viewDidLoad()

        let scrollListView = NSScrollView()
        let listView = ListView(frame: NSRect(x:100, y: 100, width: 100, height: 100))
        scrollListView.documentView = listView

        let viewController = NSViewController()
        viewController.view = scrollListView

        popover.appearance = NSAppearance(named: NSAppearance.Name.vibrantLight)
        popover.animates = false
        popover.contentViewController = viewController
    }
}

class ListView: NSTableView, NSTableViewDataSource, NSTableViewDelegate { 
    private var list = ["Tom","Jack","Susi"]

    required init?(coder: NSCoder) { 
        super.init(coder: coder)
        setup()
    }

    override init(frame frameRect: NSRect) { 
        super.init(frame: frameRect)
        setup()
    }

    private func setup() { 
        selectionHighlightStyle = NSTableView.SelectionHighlightStyle.regular
        rowSizeStyle = NSTableView.RowSizeStyle.small
        intercellSpacing = NSMakeSize(10.0, 0.0)
        headerView = nil
        target = self

        backgroundColor = NSColor.white
        for column in tableColumns { 
            removeTableColumn(column)
        }
        let column1 = NSTableColumn(identifier: NSUserInterfaceItemIdentifier(rawValue: "text"))
        column1.isEditable = false
        column1.width = 200
        addTableColumn(column1)

        delegate = self
        dataSource = self

        self.reloadData()
    }

    func numberOfRows(in tableView: NSTableView) -> Int { 
        return list.count
    }

    func tableView(_ tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? { 
        return NSTableRowView()
    }

    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        var cellView = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "MyView"), owner: self) as? NSTableCellView
        if cellView == nil { 
            cellView = NSTableCellView(frame: NSZeroRect)
            let textField = NSTextField(frame: NSZeroRect)
            textField.isBezeled = false
            textField.drawsBackground = false
            textField.isEditable = false
            textField.isSelectable = false
            cellView!.addSubview(textField)
            cellView!.textField = textField
            cellView!.identifier = NSUserInterfaceItemIdentifier(rawValue: "MyView")
        }
        cellView!.textField!.stringValue = list[row]

        return cellView
    }
}

我最近遇到了这个问题,但找不到令人满意的解决方案。

我现在设法做到的方法是包装NSTableView里面一个NSEffectView并将状态设置为非活动状态,查看此处指出的:https://christiantietze.de/posts/2017/06/nssplitviewcontroller-visual-effects/ https://christiantietze.de/posts/2017/06/nssplitviewcontroller-visual-effects/(我在IB中做过这个)

对于正常/浅绿色外观来说,它确实工作得很好。遗憾的是,在黑暗的外观中,TableView 部分标题由于某种原因是透明的。我很好奇它在 Mojave 上的全系统深色模式下会是什么样子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSPopover 内的 NSTableview 看起来与独立的不同 的相关文章

  • 如何右对齐 UILabel?

    Remark 实施 myLabel textAlignment right does not解决了我的问题 这不是我所要求的 我想要实现的是让标签对齐右对齐 为了更清楚地说明 这就是如何left对齐外观 就是这样justify对齐外观 if
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • 如何在不卸载应用程序的情况下删除木桶?

    我最近安装了一个带有 homebrew cask 的应用程序 但我想自己处理它的更新 而不是通过brew cask upgrade 是否有命令或选项可以从本地列表中删除木桶而不卸载它 如果我使用brew cask remove or bre
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • OSX 上的 locale.getlocale() 问题

    我需要获取系统区域设置来执行许多操作 最终我想使用 gettext 翻译我的应用程序 我打算在 Linux 和 OSX 上分发它 但我在 OSX Snow Leopard 上遇到了问题 python Python 2 5 2 r252 60
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • Swift:如何减少 didupdatelocations 调用

    我想出了一些代码来打印我所在位置的地址和邮政编码 这是在 didupdatelocation 函数中完成的 我遇到的唯一问题是 didupdatelocation 函数每秒都会更新该地址 因为这电池效率非常低 所以我一直在寻找使用间隔的方法
  • 检测 AVAudioPlayer 中的播放结束

    我有几个短的 mp3 声音 我将它们存储在数组中 并希望连续播放它们 有什么方法可以检测 AVAudioPlayer 何时停止播放 以便我可以调用完成处理程序并播放下一个声音 我知道有一个委托 但我正在使用 Playground 和 SKS
  • 如何在 Swift 中获取字典中最后输入的值?

    如何获取 Swift 字典中最后输入的值 例如 我如何从下面获取值 CCC var dictionary Dictionary
  • SKNode 上的 runAction 未完成

    我使用 NSOperation 子类来获取串行执行SKAction正如这个问题中所描述的 如何在 Swift 中子类化 NSOperation 以将 SKAction 对象排队以进行串行执行 https stackoverflow com
  • 在 Mac 上使用 Eclipse 进行 C++ 调试器

    当我最终设置我的 mac 来使用 eclipse 后 我无法调试 我尝试通过谷歌寻求帮助 但没有一个答案对我有用 所以 我需要有人帮助我在 eclipse 上安装和使用 c c 调试器 我安装了 Xcode 5 0 感谢您的帮助 Roy 您
  • Swift C 回调 - Swift 类指针的 takeUnretainedValue 或 takeRetainedValue

    我有一些UIView or UITableViewCell 里面我有 C 回调 例如 CCallback bridge self observer data gt Void in let mySelf Unmanaged
  • 使用基于约束的布局自动调整 NSTokenField 的大小

    有没有办法自动调整大小height使用约束的 NSTokenField 保持宽度恒定 sizeToFit应该有效 但事实并非如此 如果我设置一个约束来保持宽度不变并调用此方法 它将忽略约束并仅调整宽度大小 当我想要的是仅调整高度大小时 基于
  • CGPoint 标量乘法 Swift

    我正在 SpriteKit 中构建一个平台游戏 并将为我的实体实现更新功能 以便它们根据重力和速度移动 但是 我需要使添加的速度量与增量时间成比例 以防止帧速率影响我的实体的移动方式 因此我将导入 GLKit 以便我可以使用标量函数 但是
  • 使用 UISearchBar 过滤数组

    我目前正在使用以下代码来过滤数组并将结果显示在我的 tableView 中 问题是 只有当搜索与确切的单词匹配时 才会返回结果 如何更改数组过滤器以在输入时搜索每个字符 let data Mango Grape Berry Orange A
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 如何自动缩放mapView以显示叠加层

    我可以在 mapView 上绘制多边形 但是我需要找到多边形并手动缩放它 有没有办法自动执行此过程 例如调整中心多边形 我浏览过互联网并阅读了一些相关文章 其中大多数都是基于折线和点的 任何形式的帮助将不胜感激 因为我正在寻找解决方案一段时
  • Codesign:什么是未密封内容?

    我刚刚升级到 XCode 6 并尝试构建我的开发者 ID 签名的 Mac 应用程序 但是 我现在收到以下协同设计错误 unsealed contents present in the root directory of an embedde
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open

随机推荐