Странный прямоугольник (NSBannerView) в левой верхней части NSTableView - PullRequest
0 голосов
/ 03 сентября 2018

Я работаю над приложением macOS и испытываю странную проблему. В левом верхнем углу моего NSTableView (над заголовком) показан серый прямоугольник:

enter image description here

(Я добавил NSBox за NSTableView, чтобы сделать его более понятным на скриншоте)

С Иерархией Представления Отладки я видел, что это NSBannerView, который добавлен к Представлению Прокрутки, оборачивающему Представление Таблицы.

Мой пользовательский интерфейс построен с помощью Interface Builder (раскадровка). Я установил и снял много флажков в Интерфейсном Разработчике, но не могу найти, что это такое. Google и Stack Overflow также не дают никаких подсказок. Поиск в Google для «NSBannerView» дает только некоторые заголовочные файлы macOS.

Как избавиться от прямоугольника?

Сведения об окружающей среде

  • macOS Mojave 10,14 Beta (18A365a)
  • Xcode 9.4.1 (9F2000)

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Превращение этой скрытой вещи в didAddSubview может быть лучшим решением, как в примере ниже. Потому что layout вызывается каждый раз, когда вы выбираете строку.

override func didAddSubview(_ subview: NSView) {
    super.didAddSubview(subview)

    if subview.className == "NSBannerView" {
        subview.isHidden = true
    }
}
0 голосов
/ 06 сентября 2018

Подкласс NSTableRowView и перезапись layout, где вы скрываете представление

- (void)layout {

    [super layout];

    for (NSView * v in self.subviews) {
        if ([v.className isEqual:@"NSBannerView"]) {
            v.hidden = YES;
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...