iOS Objective-C获取当前显示的UIAlertController的参考

时间:2019-04-24 07:53:40

标签: ios objective-c uialertcontroller

我想获取有关当前显示的UIAlertController的参考。

(有些人以为我的问题很烂,并且投票否决了。但是他们错了,因为有一个问题的答案,我将其张贴出来,所以对此感兴趣的其他人可以找到它!)

1 个答案:

答案 0 :(得分:0)

我用一个弱引用创建了一个单例类,然后扩展了UIAlertController并提出了一种新的方法来呈现它,在其中我将此弱引用设置为新显示的警报。现在,只要有其他参考,它便会保留该警报的参考。

UIAlertController + Extension.h

@interface UIAlertController(Extension)

- (UIAlertController*)showIn:(UIViewController*)viewController;
+ (UIAlertController*)lastOnScreenAlert;

@end

UIAlertController + Extension.m

@interface LastAlert : NSObject

@property (nonatomic, weak) UIAlertController* reference;

@end

static LastAlert* lastAlert;

@implementation LastAlert

+ (void)initialize
{
    [super initialize];
    lastAlert = [LastAlert new];
}

@end

@implementation UIAlertController(Extension)

- (UIAlertController*)showIn:(UIViewController*)viewController
{
    [viewController presentViewController:self animated:YES completion:nil];
    [LastAlert class];
    lastAlert.reference = self;
    return self;
}
+ (UIAlertController*)lastOnScreenAlert
{
    return lastAlert.reference;
}

@end