我从我的NSObject类在服务器上上传数据,现在我想在数据上传时显示MBProgressHUD,我知道如何用ViewController显示MBProgressHUD,但不知道如何在NSObject类中显示它。
发布于 2012-11-02 15:05:33
AppDelegate* delegate = [[UIApplication sharedApplication] delegate];
[delegate.window addSubview:HUD];
...
[HUD removeFromSuperview];发布于 2012-11-02 15:13:03
解决这类问题有几种方法。最常见的是使用委托模式,尽管您可以使用块、KVO或通知。
您应该首先创建一个协议,这样您就可以在发出呼叫的UIViewController和NSObject之间通信。虽然您不需要创建这种通信,但是您应该使用它来获得更灵活的代码。
通常,我会做这样的事情:
@protocol CommunicationDelegate <NSObject>
@required
-(void)communicationSucceed;
-(void)communicationFailedWithError:(NSError*)anError;在您的NSObject中,您将拥有一个符合协议CommunicationDelegate的对象的weak引用。在您的.h中应该有这样的内容:
@property(nonatomic, weak) id <CommunicationDelegate> communicationDelegate;在您真正开始使用NSObject工作之前,您应该这样做:
myObjectThatWillDoSomething.communicationDelegate = self;此时,在您的UIViewController和NSObject之间有一个有效的引用。在UIViewController的.h文件中添加以下内容:
@interface myViewController : UIViewController <CommunicationDelegate>因此,您的UIViewController符合CommunicationDelegate协议。
您现在可以从您的MBProgressHUD启动UIViewController。一旦您的NSObject完成了他的工作,您可以调用:
[communicationDelegate communicationSucceed];或
[communicationDelegate communicationFailedWithError:anError]; //anError is used to describe what went wrong一旦调用了这些方法之一,就可以删除MBProgressHUD。请理解此方法是在UIViewController中调用的。
发布于 2012-11-02 14:53:26
当您上传NSObject时,会显示一个视图,对吗?所以在那个视图中显示你的HUD。您可能需要创建一个委托,以便在下载开始时、何时结束以及出现错误时通知视图。
https://stackoverflow.com/questions/13197522
复制相似问题