Правильный способ использования галочек в NSMenuItem - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть NSMenuItem.Я хочу, чтобы state aka value aka checkmark пункта меню соответствовал логическому значению, которое я использую в объекте.

В настоящее время я использую выход "Отправленные действия" -> "Выбор",Перетащите его на мой объект и используйте следующий IBAction:

- (IBAction) setMyGlobalBoolean:(id)sender
{
    if(globalBoolean)
    {
        globalBoolean = FALSE;
        [sender setState: NSOffState];
    }
    else if(!globalBoolean)
    {
        globalBoolean = TRUE;
        [sender setState: NSOnState];
    }
}

Однако у меня есть ощущение, что я должен использовать Bindings Inspector, чтобы связать свойство Valueк логической переменной.

Проблема в том, что когда я пытаюсь это сделать, я не могу связать свой логический параметр со значением.Я могу связать Значение с объектом в IB.Но тогда поле «Ключ контроллера» будет пустым и недоступным для редактирования.

Единственный способ заставить поле Ключ контроллера работать, если я подключу поле Значение к Shared User Defaults Controller ... иЯ не знаю, что это такое и почему / если мне следует это использовать.

1 Ответ

0 голосов
/ 12 сентября 2011

Вы упомянули, что у вас есть глобальное логическое значение (которое предполагает, что оно глобально для вашего приложения), но затем вы также говорите о попытке получить доступ к логическому значению через объект.

Если вы хотите сохранить значение вашего логического значения в NSUserDefaults, вам следует использовать Shared Used Defaults Controller. У вас есть доступ к ключу контроллера, потому что это контроллер.

Если логическое значение является членом вашего объекта, вам следует создать методы доступа, чтобы его можно было использовать с кодированием значения ключа.

Если логическое значение действительно глобально, то я не думаю, что вы можете связать с ним значение. Я бы посоветовал вам создать свой «глобальный» логический элемент в вашем делегате приложения, а затем связать свой NSMenuItem с делегатом приложения. Поскольку App Delegate не является контроллером, вам нужно всего лишь использовать globalBoolean в качестве ключевого пути модели.

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