Как узнать, какой NSTableView открыл контекстное меню? - PullRequest
1 голос
/ 26 сентября 2010

У меня есть 5 экземпляров NSTableView с одинаковым контекстным меню.Когда я получаю сообщение о том, что меню было выбрано, мне нужно знать, какая таблица отправила его.Я проверил документацию NSMenu, но, похоже, не могу найти способ проверить, какая из таблиц открыла менюэто будет лучшим способом?

ОБНОВЛЕНИЕ:

Спасибо, Джошуа, я использую 5 таблиц для отображения 5-дневного планирования задач на неделю.Каждая таблица представляет день недели, и я добавил контекстное меню для добавления и удаления задач.Поэтому, когда пользователь нажимает «добавить задачу» в день недели, мне нужно знать, какой именно.У меня это работает, создав подклассы таблицы и отправив сообщение делегату при открытии меню.Таким образом, мой контроллер знает, какая из таблиц была последней, кто вызвал меню.Но мне не кажется, что это лучшая реализация, возможно, вы сказали, что проблема в интерфейсе пользователя, что вы думаете?Хосе.

1 Ответ

1 голос
/ 30 сентября 2010

Я не вижу способа получить эту информацию. Меню не «привязаны» ни к чему; они отображаются в определенном месте. Ваше -menuForEvent: переопределение может работать, но оно дает мне волю.

Хотя это не ответ на ваш вопрос, я признаюсь, что моя первая реакция: «Почему у вас несколько таблиц с одинаковым меню?» Это больше поражает меня как вопрос пользовательского интерфейса. Можно было бы подумать, что контекстное меню будет довольно специфичным для конкретной вещи (или ее вида), которую оно представляет. Возникает вопрос: почему у вас есть 5 табличных представлений, которые имеют абсолютно одинаковый контекст? Если все 5 таблиц представляют вещи, которые управляются одинаковым образом (предположительно) одним и тем же контроллером, весьма вероятно, что существует лучший способ представить вашу «коллекцию вещей», чем 5 отдельных таблиц.

Я делаю много предположений, само собой разумеется, но мое любопытство, я полагаю, берет верх над мной. : -)

...