В моем приложении у меня есть три UIButton, каждый из которых связан с UIView. Когда одна из кнопок нажата, я хочу:Самый чистый способ получить связанный UIView от обработчика пресса UIButton
- Выделите нажимается кнопка
- Un-выделить другие кнопки
- скрыть UIViews, связанные с другими кнопками
- Un-скрыть UIView связанные с нажатой кнопкой
Мое решение (ниже) работает и не ужасно, но я не могу не думать, что есть более чистый и эффективный способ. Какие-либо предложения?
-(IBAction)buttonPressed:(id)sender {
NSArray *buttonArray = [NSArray arrayWithObjects:button1, button2, button3, nil];
NSDictionary* buttonViewDict = @{button1.titleLabel.text : view1,
button2.titleLabel.text : view2,
button3.titleLabel.text : view3};
for (UIButton* button in buttonArray) {
[button setHighlighted:[button isEqual:sender]];
[((UIView*)[buttonViewDict objectForKey:button.titleLabel.text]) setHidden:![button isEqual:sender]];
}
}
Я хотел бы сделать это так же, как, как вы сделали. –
Я бы сделал то же самое, хотя, если кнопки и представления не являются динамическими, я бы рассмотрел возможность определения массива и словаря только один раз :) – brechtb
Вы можете использовать кнопки в коллекции. Также почему вам нужно buttonViewDict, когда вы можете использовать свойство кнопки? :) – sunshinejr