使用协议和委派的AppDelegate中的UIActivityView



我正在尝试在我的应用程序中实现UIActivityView。它已经在工作了,但我现在需要做的是在AppDelegate中创建一个方法,供其他类使用,所以我不需要重复代码。

在我的AppDelegate中,我有以下方法:

- (void)acionarActivityIndicator {
NSLog(@"mETODO APPDELEGATE");
// Show the activity indicator
UIView *view = [[UIView alloc] init];
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] init];
view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
view.frame = self.window.bounds;
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
CGRect frame = view.frame;
activityIndicator.center = CGPointMake(frame.size.width/2, frame.size.height/2);
[view addSubview:activityIndicator];
[activityIndicator startAnimating];
[self.window addSubview:view];
[self.window makeKeyAndVisible];
}

该方法在@protocol.h文件中声明。

@protocol ActivityIndicatorProtocol <NSObject>
@required
- (void)acionarActivityIndicator;
@end

现在,在buttonClick或其他什么上,我需要将此视图放置在活动VC上。为此,我将AppDelegate设置为我的VC的delegate

我在VC:的viewDidLoad上有这个

ITAppDelegate *appDelegate = [[ITAppDelegate alloc] init];
self.delegate = appDelegate;
NSLog(@"DELEGATE %@", self.delegate);

这是正确分配委托。委托@property在我的VC.h中声明如下:

@property(nonatomic, assign)id delegate;

现在,同样在viewDidLoad中,出于测试目的,我试图通过调用AppDelegate中的方法来显示UIActivityIndicatorView

[self.delegate acionarActivityIndicator];

这不起作用,我不知道为什么。我可以使用其他策略放置activityIndicators,但我真的想学习如何正确地做到这一点。

尝试使用

ITAppDelegate *appDelegate = (ITAppDelegate *)[[UIApplication sharedApplication] delegate];

指示

ITAppDelegate *appDelegate = [[ITAppDelegate alloc] init];

最新更新