Возможно, вам придется написать немного кода, но вы все равно можете использовать привязки для управления элементами пользовательского интерфейса, в этом случае всплывающая кнопка.
Вот один из способов сделать это, который имеетработал для меня:
В контроллере, который предоставляет контент для контроллера массива, определите свойство, которое содержит набор индексов выбора, соответствующий выбору в табличном представлении.Свяжите его с набором индексов выбора контроллера массива, чтобы он всегда обновлялся и синхронизировался с табличным представлением.Для простоты я назвал его fileSelectionIndexSet
следующим образом.
Затем определите свойство, обеспечивающее индекс для всплывающей кнопки.Ниже я назвал это styleIndex
.
Вы можете привязать индекс выбора всплывающих кнопок к этому свойству.Возможно, вам также придется предоставлять его содержимое от контроллера.Это может быть свойство только для чтения, возвращающее статический массив строк, например.
// Header file, just synthezise in implementation
@property (retain) NSInteger styleIndex;
Зарегистрируйте контроллер в качестве наблюдателя его собственного свойства fileSelectionIndexSet
:
// It doesn't have to be awakeFromNib, any method will do if called before
// you need the functionality
-(void)awakeFromNib
{
[self addObserver:self
forKeyPath: @"fileSelectionIndexSet"
options:NSKeyValueObservingOptionNew
context:NULL];
}
- (void) observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if ( [keyPath isEqualToString: @"fileSelectionIndexSet"] )
{
NSInteger index;
index = ... // Compute value based on current LPFile selection
self.styleIndex = index;
}
}
Реализация себякак наблюдатель своего собственного свойства делает свойство styleIndex
односторонним, зависимым от fileSelectionIndexSet
.
Это означает, что всякий раз, когда пользователь изменяет выбор в табличном представлении, всплывающая кнопка обновляется.Однако когда пользователь изменяет выбор в всплывающей кнопке, в табличном представлении ничего не меняется.