У меня есть NSMenuItem
, который включен/отключен в зависимости от того, отвечает ли первый ответчик конкретному селектору.Можно ли условно отключить NSMenuItem, который включен, только когда первый ответчик отвечает на селектор?
Моя проблема в том, что есть условия, в которых я делаю не хочу, чтобы элемент был включен для первого ответчика.
Но я не могу просто условно удалить определение метода во время выполнения, чтобы отключить пункт меню
Для примера того, что я имею в виду:
У меня есть NSDocument
-А аппликация, и у меня есть два основные подклассы - a ImageDocument
и a VideoDocument
У меня есть NSMenuItem
под названием «Захват кадра», который превращает рамку видео в изображение. Но, очевидно, это должно быть отключено на ImageDocument
и включено только на VideoDocument
.
NSMenuItem
включен, если первый респондент отвечает на -captureFrame
VideoDocumentController
имеет метод, -captureFrame
, поэтому он включен. ImageDocumentController
нет, поэтому элемент меню никогда не включается.
Но, есть конкретные VideoDocument
с, что я не хочу, чтобы этот пункт меню был включен. Что может быть лучшим способом отключить этот пункт меню для обработки особых случаев?
Ах, ладно, спасибо! Ваш ответ на самом деле немного неактивен, мне пришлось использовать '-validateMenuItem' на контроллере документа, и я также получил исключение, когда я назвал' super', поэтому я этого не делал. И тогда все сработало: D Может быть, вы можете отредактировать свой ответ, прежде чем я укажу правильно? –
Я добавил возможность переопределения в NSDocumentController. Но если это не сработало, вы сделали что-то не так. Документы на NSDocumentController даже говорят, что вы должны называть '[super validateUserInterfaceItem:]' в переопределении. – JWWalker
А я вижу проблему, я сказал «VideoDocumentController», не понимая, что это подразумевает, что у меня есть подкласс «NSDocumentController». Мой «контроллер» в этом случае является подклассом «NSViewController», который отображает «VideoDocument» –