2013-12-10 39 views
0

myObject.h我们可以在NSObject中使用viewController视图吗?

@interface serverBaglantisi : NSObject<MBProgressHUDDelegate> { 
    MBProgressHUD *HUD; 
} 

myObject.m

-(void) callHud:(NSString*)text{ 

    HUD = [[MBProgressHUD alloc] initWithView:self.view]; // here 

    [self.view addSubview:HUD];// here 
    HUD.delegate = self; 
    HUD.labelText = text; 
    [HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES]; 
} 

我也用MBProgressHud类。如果我在viewController.m中添加“callHud”方法(并将myProgressTask添加到viewController.m中),那么一切正常。但是我想知道是否可以在我的NSObject中成功调用?

对不起,noob问题我是iOS开发人员的新手。

回答

0

Np,你不能。 NSObject未定义名为view的属性。但是你可以在视图控制器传递给对象:

- (void)showHudWithMessage:(NSString*)text fromViewController:(UIViewController *)viewController 
{ 
     HUD = [[MBProgressHUD alloc] initWithView:viewController.view]; 
     [viewController.view addSubview:HUD]; 
     HUD.delegate = self; 
     HUD.labelText = text; 
     [HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];  
} 
+1

这是非常好的想法...并感谢你的例子... – Antiokhos

+0

我只是尝试你的例子。缺少一行 [viewController.view addSubview:HUD]; 我用你的答案编辑我的原始问题。再次感谢 – Antiokhos

+0

我已经更新了我的答案。另外,你不应该在问题中提供答案。 – neilco

0

简短的回答: -

NO,则不能将类从NSObject的继承里面添加子视图。您只能添加从viewController继承的子视图。因为每个viewController都包含NSObject没有的视图实例。

+0

嗯非常感谢... – Antiokhos

+0

@AntioKhos,您的欢迎:) –

0

您可以添加@properties (week) UIView *view;您myObject.h和myObject的创作经过四个视图控制器,你可以添加myObjectObject.view = self.view;你呼叫callHud后:它应该可以工作。或者,你可以改变你的方法接受的UIView:

-(void) callHud:(NSString*)text view:(UIView*)view{ ...} 

而且,您可以从您的视图控制器喜欢叫它:

[myObjectObject callHud:@"Your text" view:self.view 
0

在AppDelegate.h

+ (AppDelegate*)sharedDelegate; 

在AppDelegate.m

+ (AppDelegate*)sharedDelegate{ 

    return (AppDelegate*)[UIApplication sharedApplication].delegate; 
} 

然后在NSObject.h类

- (void)startHUD; 

然后在您的NSObject.m类

-(void)startHUD{ 

    AppDelegate * app = [AppDelegate sharedDelegate]; 

    //--- to start the activity indicatior ---- 
    MBProgressHUD * hud = [MBProgressHUD showHUDAddedTo:app.window animated:YES]; 
    hud.mode = MBProgressHUDModeIndeterminate; 
    //hud.contentColor = [UIColor colorWithRed:0.f green:0.6f blue:0.7f alpha:1.f]; 
    [app.window bringSubviewToFront:hud]; 
} 
相关问题