Я только что создал новый проект XCode. В заголовочном файле класса AppControl у меня определены следующие объекты (и некоторые другие тоже):
IBOutlet NSImageView *inputImageView;
IBOutlet NSImageView *outputImageView;
IBOutlet NSTextField *myNoiseLevel;
IBOutlet CGFloat *mySharpness;
После помещения базового кода в файлы .h и .m я пошел в Interface Builder и создал свой пользовательский интерфейс. Мне удалось связать два элемента управления NSImageView в IB с соответствующими объектами NSImageView, перечисленными выше. И я также смог связать несколько других объектов / элементов управления. Но я НЕ могу связать два последних элемента (myNoiseLevel и mySharpness) с элементами управления NSSlider, которые есть в главном окне приложения. Я не уверен почему. Я знаю, что такие вещи, вероятно, трудно диагностировать, потому что они не «строго связаны с кодом», но если есть что-то «хитрое» в связывании ползунков, пожалуйста, дайте мне знать, какие основные «подозрения» следует проверять.
Это моя первая попытка использовать ползунок через IB. У меня есть книга («Какао-программирование для Mac OS X», 3-е изд., А. Хиллегасс), которую я использую, чтобы узнать об основных способах выполнения этой вещи. И у него есть пример слайдера там. Но его пример слайдера "непрерывный" и использует привязку к ключевому пути. Я думаю, что это излишне для того, что я хочу / нужно сделать - я просто хочу извлечь значение из ползунка, когда нажата другая кнопка (нет необходимости в «постоянном» обновлении). Поэтому я пытаюсь напрямую связать перечисленные «розетки», когда я щелкаю правой кнопкой мыши по своему объекту управления приложениями (по одному для каждого из этих элементов, показанных выше), с ползунками в моем окне. Но когда я перетаскиваю cntl из розетки AppControl до соответствующего ползунка, ползунок не «принимает» перетаскиваемую стрелку.
Имеет ли это смысл? Есть идеи, что я делаю неправильно и / или что мне нужно сделать, чтобы привязка работала? Я попытался сохранить / построить / закрыть и открыть IB и Xcode - все, чтобы убедиться, что IB имеет последнюю версию всего. Тем не менее, все же не повезло.
И последнее. Что мне действительно нужно, так это числа CGFloat с ползунка. Могу ли я просто объявить Outlet как тип CGFloat ... или мне нужно определить его как NSTextField (или что-то еще), а затем преобразовать его в Float в моей программе? Вы можете видеть в IBOutlets, который я вставил выше, что я пробовал разные типы данных для выходов (пытаясь понять, было ли мое определение их как CGFloat каким-то образом предотвращать привязки).