Работа с NSTableView


#1

Парни, я опять с вопросом)

У меня не получается проработать вопрос выделения ячейки в TableView.
Мне нужны ячейки с двумя строками, я создал ячейку, бросил туда два лэйбла, объявил их и в tableView в stringValue записываю то что нужно, но проблема в том, что при выделении ячейки текст не становится белого цвета, как в обычной таблице.

Я придумал следующее - объявил опциональную переменную - var selectedItem: Int?
куда записываю номер выбранной ячейки по событию clickTableView и в tableView лэйблы крашу в белый цвет.

Но проблема в том, что это работает только при нажатии мышкой, при перемещении по таблице стрелками на клавиатуре цвет не меняется.

Соответственно вопрос, как можно по другому реализовать мою идею?
Может быть есть события обработки или вообще я не в ту сторону ушел и есть более тривиальный способ окрашивания лэйблов?

Помогите плиз. Приложения для MacOS)
Спасибо.


#2

P.S. И еще, для перерисовки цветов приходится обращаться к tableView.reloadData() что приводит к мерцанию компонента при нажатии, что тоже явный минус.


#3

Неужели никто не работает с NSTableView?


#4

Работают, но редко. AppKit не всем заходит нормально.

tableViewSelectionDidChange - этот метод делегата реализован?


#5

Нормально он заходит :slight_smile:

Спрос рождает предложение, пользователей iOS (у нас) несопоставимо больше чем пользователей macOS, от этого и разработчиков под мак практически нет, если только кто для себя пишет.
Писал я приложение под мак (в молодости) и оно даже в топе было


Но в итоге оказалось никому ненужным, заказчик потратил деньги а я время, в 2018 писать под мак вообще смысла не вижу.

P.S. Если только выпустят какой нибудь UXKit и существующие iOS приложения можно будет без особых усилий адаптировать под macOS, а все новые автоматом будут работать. В любом случае AppKit скорее мертв и практически не развивается.


#6

Ответа на Ваш вопрос у меня нет.
Есть вопрос [quote=“Android, post:1, topic:5102”]
ячейки с двумя строками
[/quote] означает что у Вас вместо одной строки текста есть две строки текста ? Поясните.
Я использовал NSTableview, как view-based table и у меня одна строка текста и он окрашивается в белый цвет а фон в темный (я поменял на серый) и при перемещении стрелками следующая строка окрашивается так же как и мышкой.


#7

Супер! Спасибо большое!
В нем без reloadData в переменную selectedRow можно записать в tableView отрисовывать!