iOS Objective-C Получить ссылку на текущий отображаемый UIAlertController - PullRequest
0 голосов
/ 24 апреля 2019

Я хотел бы получить ссылку на отображаемый в данный момент UIAlertController.

(Некоторые ребята думали, что мой вопрос - отстой, и близкие проголосовали за него. Однако они ошиблись, поскольку есть ответ на вопрос, и я опубликую его, чтобы другие, заинтересованные в этом, могли его найти!)

1 Ответ

0 голосов
/ 24 апреля 2019

Я создал одноэлементный класс с одной слабой ссылкой, затем расширил 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
...