首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想在MBProgressHUD类中添加NSObject

我想在MBProgressHUD类中添加NSObject
EN

Stack Overflow用户
提问于 2012-11-02 14:46:25
回答 6查看 1.3K关注 0票数 0

我从我的NSObject类在服务器上上传数据,现在我想在数据上传时显示MBProgressHUD,我知道如何用ViewController显示MBProgressHUD,但不知道如何在NSObject类中显示它。

EN

回答 6

Stack Overflow用户

发布于 2012-11-02 15:05:33

代码语言:javascript
复制
AppDelegate* delegate = [[UIApplication sharedApplication] delegate];
[delegate.window addSubview:HUD];
...
[HUD removeFromSuperview];
票数 2
EN

Stack Overflow用户

发布于 2012-11-02 15:13:03

解决这类问题有几种方法。最常见的是使用委托模式,尽管您可以使用块、KVO或通知。

您应该首先创建一个协议,这样您就可以在发出呼叫的UIViewControllerNSObject之间通信。虽然您不需要创建这种通信,但是您应该使用它来获得更灵活的代码。

通常,我会做这样的事情:

代码语言:javascript
复制
@protocol CommunicationDelegate <NSObject>

@required

-(void)communicationSucceed;

-(void)communicationFailedWithError:(NSError*)anError;

在您的NSObject中,您将拥有一个符合协议CommunicationDelegate的对象的weak引用。在您的.h中应该有这样的内容:

代码语言:javascript
复制
@property(nonatomic, weak) id <CommunicationDelegate> communicationDelegate;

在您真正开始使用NSObject工作之前,您应该这样做:

代码语言:javascript
复制
myObjectThatWillDoSomething.communicationDelegate = self;

此时,在您的UIViewControllerNSObject之间有一个有效的引用。在UIViewController的.h文件中添加以下内容:

代码语言:javascript
复制
@interface myViewController : UIViewController <CommunicationDelegate>

因此,您的UIViewController符合CommunicationDelegate协议。

您现在可以从您的MBProgressHUD启动UIViewController。一旦您的NSObject完成了他的工作,您可以调用:

代码语言:javascript
复制
[communicationDelegate communicationSucceed];

代码语言:javascript
复制
[communicationDelegate communicationFailedWithError:anError]; //anError is used to describe what went wrong

一旦调用了这些方法之一,就可以删除MBProgressHUD。请理解此方法是在UIViewController中调用的。

票数 2
EN

Stack Overflow用户

发布于 2012-11-02 14:53:26

当您上传NSObject时,会显示一个视图,对吗?所以在那个视图中显示你的HUD。您可能需要创建一个委托,以便在下载开始时、何时结束以及出现错误时通知视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13197522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档