Предоставление моей программе «вариантов»

Ok,

В XCode 4 я создал 3 небольшие программы: калькулятор, «блокнот» (пустое окно типа заметки) и «электронный лист» (просто выглядит как электронный лист для хранения значений, полученных с помощью калькулятора)

Сейчас я пытаюсь добавить в свой калькулятор кнопку, которая при нажатии запускает либо блокнот, либо электронную таблицу, и дает пользователю возможность выбрать один из них.

Я поместил оба пакета в папку «приложения», чтобы их было легко найти.

Мне было интересно, нужно ли мне создать подкласс NSButton или есть более простой способ сделать это.

Я думал, что могу просто заставить NSButton открывать файловый браузер в /users/me/applications, а затем, когда пользователь (я :-)) выбирает одно из приложений, он просто сохранит его как переменную, которую кнопка будет затем выполните, когда я нажму его ключевой эквивалент.

Но тогда я не знаю, как дать кнопке два разных действия: «щелчок» и «нажатие».

Если мне нужно создать подкласс кнопки, с чего мне начать поиск? И если есть более простой способ, то где?


person Zrb0529    schedule 28.03.2011    source источник
comment
Что вы имеете ввиду под словом "пресс"?   -  person Peter Hosey    schedule 28.03.2011


Ответы (2)


Кажется, что простым решением были бы две кнопки, по одной для каждой программы.

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

person Caleb    schedule 28.03.2011
comment
Я хотел бы использовать второй метод (я использую это приложение, чтобы изучить все тонкости Objective-C в качестве дополнения к документации Apple и их книгам Objective-C). Мне было интересно, как я могу позволить кнопке иметь 2 функции: одну для выбора программы, а другую для ее фактического запуска. Возможно ли это со стандартным NSButton или его нужно создать подклассом? - person Zrb0529; 28.03.2011
comment
Я думаю, что правильный способ сделать это, если вы действительно хотите использовать одну кнопку, — это использовать NSPopupButton, а не NSButton. Щелчок по всплывающей кнопке открывает меню. Ваша кнопка может отображать меню с именами ваших двух приложений, и выбор приложения из меню запускает это приложение. Это позволяет избежать создания подклассов и обеспечивает пользовательский интерфейс, который должен быть знаком пользователям. - person Caleb; 28.03.2011
comment
Мне нравится такой подход, звучит красиво. Есть ли способ сделать так, чтобы меню позволяло мне решать, какую из программ будет запускать кнопка, а затем нажатие ее «эквивалента клавиатуры» фактически запускало программу? - person Zrb0529; 28.03.2011

Мне нравится такой подход, звучит красиво. Есть ли способ сделать так, чтобы меню позволяло мне решать, какую из программ будет запускать кнопка, а затем нажатие ее «эквивалента клавиатуры» фактически запускало программу? – TotalCocoaNewb

Безусловно так:

-(IBAction)theActionYouSetOnThePopupButtonInInterfaceBuilder:(NSPopUpButton*)sender
{
    if ( 0 == [sender indexOfSelectedItem] ) {
       // do something...
    } else {
       // do something else...
    }
}
person danyowdee    schedule 28.03.2011