简单来说,我想从我的类中在一个UIAlertAction处理程序中调用一个方法或引用一个变量。
我需要向这个处理程序传递一个块吗?还是有其他方法可以实现这一点?
我需要向这个处理程序传递一个块吗?还是有其他方法可以实现这一点?
@interface OSAlertAllView ()
@property (nonatomic, strong) NSString *aString;
@end
@implementation OSAlertAllView
+ (void)alertWithTitle:(NSString *)title message:(NSString *)msg cancelTitle:(NSString *)cancel inView:(UIViewController *)view
{
__weak __typeof(self) weakSelf = self;
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:msg
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:cancel style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
// I'd like to reference a variable or method here
weakSelf.aString = @"Apples"; // Not sure if this would be necessary
self.aString = @"Apples"; // Member reference type 'struct objc_class *' is a pointer Error
[self someMethod]; // No known class method Error
}];
[alert addAction:defaultAction];
[view presentViewController:alert animated:YES completion:nil];
}
- (void)someMethod {
}
alertWithTitle...
方法是一个类方法,而不是一个实例方法。将其改为实例方法,你就可以做你试图做的事情了。 - rmaddy