Я пытаюсь написать вспомогательный класс, чтобы наше приложение могло поддерживать как UIAlertAction
, так и UIAlertView
. Однако при написании метода alertView:clickedButtonAtIndex:
для UIAlertViewDelegate
я столкнулся с проблемой: я не вижу возможности выполнить код в блоке обработчика UIAlertAction
.
Я пытаюсь сделать это, сохраняя массив UIAlertAction
в свойстве с именем handlers
.
@property (nonatomic, strong) NSArray *handlers;
а затем реализовать такой делегат:
- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
UIAlertAction *action = self.handlers[buttonIndex];
if (action.enabled)
action.handler(action);
}
Тем не менее, нет свойства action.handler
или какого-либо другого способа, которым я могу его получить, поскольку заголовок UIAlertAction
просто имеет:
NS_CLASS_AVAILABLE_IOS(8_0) @interface UIAlertAction : NSObject <NSCopying>
+ (instancetype)actionWithTitle:(NSString *)title style:(UIAlertActionStyle)style handler:(void (^)(UIAlertAction *action))handler;
@property (nonatomic, readonly) NSString *title;
@property (nonatomic, readonly) UIAlertActionStyle style;
@property (nonatomic, getter=isEnabled) BOOL enabled;
@end
Есть ли другой способ выполнить код в блоке handler
блока UIAlertAction
?