我正在尝试编写一个帮助程序类以允许我们的应用程序同时支持UIAlertAction
和UIAlertView
. 但是,在alertView:clickedButtonAtIndex:
为.UIAlertViewDelegate
UIAlertAction
我试图通过UIAlertAction
在一个名为的属性中保留一个 s数组来做到这一点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
a 块中的代码UIAlertAction
?