2013-12-10 63 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]; 
} 
相關問題