我正在尝试编写一个帮助类,以允许我们的应用程序同时支持UIAlertAction和UIAlertView.但是,在为UIAlertViewDelegate编写alertView:clickedButtonAtIndex:方法时,我遇到了这个问题:我看不到在UIAlertAction的处理程序块中执行代码的方法.
我试图通过在称为处理程序的属性中保留一组UIAlertActions来做到这一点
@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