2011-01-28 47 views
0

我正在從.net Web服務器獲取Web服務。removeFromSuperview不刪除從其他類的視圖調用

而在此過程中(獲取數據),我正在顯示一個帶有活動指標的子視圖。

完成獲取數據後,我需要關閉該視圖。

我有兩個班一個是myclassviewcontroller,web服務

基本上我寫代碼來獲取Web服務的Web服務。

在web服務類的

- (空)connectionDidFinishLoading:(NSURLConnection的*)連接我叫MyClass的這個樣子。

myclassviewcontroller *obj = [[myclassviewcontroller alloc]init]; 
[obj mymethod]; 

在myclassviewcontroller我寫我的方法的代碼。

  • (無效)的MyMethod {

    [的loadView removeFromSuperview]; }

該方法被執行但不刪除視圖。

我已經在myclassviewcontroller.h類中聲明瞭它。

我檢查這個通過保持一些文本中的NSLog

但是,如果我使用計時器在myclassviewcontroller.m調用此的MyMethod然後刪除視圖。

什麼錯。

任何人都可以幫助我。

我認爲這可能是明白我的問題是什麼,如果不是,請給我評論。

謝謝你提前。

+0

這是什麼的loadView對象?初始化的地方? – 2011-01-28 07:39:19

+0

這是一個activityindicator的子視圖,我在myclassviewcontroller.h中聲明並給它@property(nonatomic,retain) – MaheshBabu 2011-01-28 07:42:44

回答

0

我相信問題與您的代碼是你如何訪問myclassviewcontroller。它必須在數據加載時已經在屏幕上,因此創建該類的新實例並調用針對其未初始化成員之一的方法(loadview)不會執行任何操作。

myclassviewcontroller *obj = [[myclassviewcontroller alloc]init]; 
// here object has just been initialized 
// (it is not the same instance as the one on screen) 
[obj mymethod]; 

如果obj是實際的ViewController是在畫面的參考,你可以方便地調用:

[obj.loadview removeFromSuperview]; 

[obj mymethod]; // if you wanted to add more code in that function 

所以,真正的問題是,你訪問與實際在屏幕上的實例不同的myclassviewcontroller實例。您需要一個變量來持有對myclassviewcontroller正確實例的引用才能訪問012arivar。

webservices.h

@interface webservices : NSObject { 
... 

// This ivar will have to be set when webservices is initialized 
myclassviewcontroller * viewController; 
} 
@property (nonatomic, retain) myclassviewcontroller * viewController; 

webservices.m需要@synchronize viewController

然後在connectionDidFinishLoading:,你可以叫[viewController.loadview removeFromSuperview];

0

這個問題可能是因爲當您的「主視圖」已經分配了「loadview」但在您的myclassviewcontroller中「不可見」時,您將實例化myclassviewcontroller,因此您的myclassviewcontroller新實例並不真正知道「loadview」 ...

我的意思是:的loadView被分配並添加到MAINVIEW(在你分配 「myclassviewcontroller」同一類......) 但然後嘗試刪除它不在你的MAINVIEW,但在myclassviewcontroller ...

嘗試修改你的方法是這樣的:

(void)mymethod { 
    if (loadview!=nil){ 
     NSLog(@"I'm here..."); 
     [loadview removeFromSuperview]; 
    } 
    } 

,看是否存在「的loadView」何時何地調用方法(在myclassviewcontroller)

盧卡

相關問題