Ссылка на массив IBOutlet (NSButton) - PullRequest
0 голосов
/ 27 февраля 2012

Я делаю приложение, в котором есть 32 флажка и NSTextField. Если пользователь нажимает на NSTextField, кнопки должны принять значение, которое описывает двоичное представление этого числа. Нет проблем с получением действия «нажал» на NSTextField, но для кнопок я объявил массив из 32 NSButtons:

#import <Foundation/Foundation.h>


@interface Handler : NSObject 
{
    @private
    IBOutlet NSTextField* textField;
    IBOutlet NSButton* bits[32];     // here are the buttons
}

- (void)awakeFromNib;
- (void) setTextField : (int) value;
- (int) getTextField;
@end

Но когда я пытаюсь связать флажок с "битами" IBOutlet, я не могу сделать это для каждого члена. Таким образом, я могу сделать только этот массив из 32 указателей на NSButton на один блок. Я также показываю изображение:

Interface builder

Это проблема для меня, нужно ли вручную объявлять 32 разных розетки с 32 разными именами?

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Вам не нужно использовать 32 разных IBOutlet ссылки. Вы можете объявить IBOutletCollection:

@property (retain, nonatomic) IBOutletCollection(NSButton) NSArray *buttons;

Используйте это, чтобы связать их всех. Помните, что порядок кнопок является недетерминированным во время выполнения, то есть вы не можете гарантировать, что кнопки будут в каком-то определенном порядке во время работы приложения.

1 голос
/ 27 февраля 2012

Это, вероятно, хороший пример использования объекта NSMatrix.

Вы можете добавить одну кнопку в свой интерфейс, а затем с помощью кнопки, выбранной в Xcode 4, перейти в Editor> Embed In> Matrix. Затем вы можете перетащить угол кнопки, чтобы развернуть его в матрицу.

NSMatrix позволяет извлекать значения ячеек путем поиска данного тега или по координатам столбца / строки.

КАК: 1) Встраивание объекта NSButton:

Creating a button matrix

2) Option-Перетащите любой из углов кнопки, чтобы развернуть матрицу:

enter image description here

0 голосов
/ 27 февраля 2012

Я расширил его в матрицу. Но графически это выглядит как одна кнопка.
Вот что я получаю:

enter image description here

enter image description here

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