Как правильно установить NSSegmentedControl включен

Я хотел бы иметь мой NSSegmentedControl с выбранным сегментом, когда он включен, и без выбранного сегмента, когда он отключен (тип поведения, который имеет представление NSSegmentedControl в iTunes).

Вот несколько изображений:

http://thumbnails34.imagebam.com/10640/95598d106393309.jpg включен и выбран

http://thumbnails27.imagebam.com/10640/fa9e3c106393310.jpg отключен правильно

http://thumbnails22.imagebam.com/10640/239a02106393312.jpg отключен, но не правильно

(*) Я понимаю, что могу написать функцию, которая будет вызываться при каждом изменении свойства BOOL, и в этой функции я могу установить все сегменты, которые были отменены, или выбрать подходящий, НО я хотел бы знать, есть ли способ сделать это с помощью Привязки какао или построитель интерфейса.

ОБНОВЛЕНИЕ: добавлены некоторые изображения проблемы

2 ответа

Решение

Программное решение может быть примерно таким:

- (void)setSegmentEnabled:(BOOL)enabled{
     if (enabled)
     {
         int vState = [[NSUserDefaults standardUserDefaults] integerForKey:@"SelectedSegmentView"];
         [viewSegment setSelectedSegment:vState];
         segmentEnabled = YES;        
     }
     else
     {
         [viewSegment setSelected:NO forSegment:0];
         [viewSegment setSelected:NO forSegment:1];
         [viewSegment setSelected:NO forSegment:2];
         segmentEnabled = NO;
     }
}

Я просто реализую свой собственный установщик для свойства BOOL segmentEnabled который связан с viewSegment

РЕДАКТИРОВАТЬ: Я не совсем уверен в этом, но я думаю, "Нет выбора заполнителя" является вашим лучшим выбором. http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CocoaBindingsRef/Concepts/BindingsOptions.html%23//apple_ref/doc/uid/20002304-187525

Я все еще думаю, что вам придется программно указывать отсутствие выбора, когда вы условно отключите элемент управления.

Другие вопросы по тегам