ли вы пытаетесь использовать рамки ReactiveCocoa и добавить некоторые блоки для вашего кода, это не самый простой подход еще я бы сказал, что является наиболее эффективным, когда у вас есть несколько зависимостей и очень хорошо для масштабирования
я создал небольшой проект для решения вашей проблемы, используя мой предложенный подход (я пытался адаптировать его к старому доброму шаблону MVC вместо моего предпочтительного MVVM)
вы можете найти его здесь
https://github.com/MWaly/MWButtonExamples
забудьте установить стручки какао файл, как нам нужно «ReactiveCocoa» и «BlocksKit» для этого образца
мы будем использовать два основных класса
ViewController => Объект ViewController отображения кнопок MWCustomButton => Пользовательские UIButton, который обрабатывает события
при создании пуговицы слабой ссылки на ViewController также создается с помощью свойства
@property (weak) ViewController *ownerViewController ;
события будут обработаны с использованием помощи метода blocksKit bk_addEventHandler и передать его в блоке ViewController (selectedButtonCallBackBlock)
[button bk_addEventHandler:^(id sender)
{
self.selectedButtonCallBackBlock(button);
} forControlEvents:UIControlEventTouchUpInside];
сейчас в ViewController для каждой кнопки Коснулся callBackButtonBlock будет trigerred, где он будет изменить его выбранную кнопку, если это применимо
__weak __typeof__(self) weakSelf = self;
self.selectedButtonCallBackBlock=^(MWCustomButton* button){
__typeof__(self) strongSelf = weakSelf;
strongSelf.currentSelectedButton=button;
};
в классе MWCustomButton, он будет слушать любые изменения в свойстве «currentSelectedButton» его ownerViewController и изменит свое свойство выбора в соответствии с его помощью нашей хорошей Реактивной какао
///Observing changes to the selected button
[[RACObserve(self, ownerViewController.currentSelectedButton) distinctUntilChanged] subscribeNext:^(MWCustomButton *x) {
self.selected=(self==x);
}];
я думаю, что это решит вашу проблему, опять же ваш вопрос может быть решен более простым способом, однако я считаю, используя этот подход будет более масштабируемыми и чисты.
Вау, провести второй, почему на Земле вы импортировать пользовательские кнопки заголовочные файлы друг с другом? И не говорите мне, что вы создали пользовательский класс для ** каждого ** и каждого 'UIButton', который у вас есть. –
Перед тем, как выбрать любую кнопку, заново создайте все кнопки –
Пожалуйста, выберите ответ, если какой-либо из них вам вообще помог или предоставить более подробную информацию, чтобы узнать, можем ли мы вам помочь. Благодаря! – veducm