2013-04-12 62 views
1

在視圖做負載變量我有這個段:範圍在viewDidLoad中初始化到另一種方法

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActionSheetStyleBlackTranslucent]; 
    [self.view addSubview:spinner]; 
    [spinner startAnimating]; 

的正常工作,

但進一步下跌:webViewDidFinishLoad我:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    [spinner stopAnimating]; 
} 

而微調範圍已經丟失。我並沒有將Spinner作爲一個出口商或一個財產/合成 - 仍然在處理它。我認爲一旦我掌握了範圍,就應該讓obj-c更好!

回答

4

spinner的範圍已經丟失。

spinner本地變量。代碼在聲明後到達最近的大括號後消失。如果您不希望發生這種情況,請將spinner作爲類或類擴展的實例變量。

實例變量的聲明之後接口聲明或類擴展聲明大括號內,例如:

// In the header file... 
@interface MyClass { 
    ... 
    UIActivityIndicatorView *spinner; 
} 
... 
@end 

// In the implementation file... 
@interface MyClass() /*class extension*/ { 
    ... 
    UIActivityIndicatorView *spinner; 
} 
... 
@end 
+0

感謝您的評論!非常感謝這一點,它會讓我接受! –

1

您需要在頭文件中將微調器變爲實例變量,否則webViewDidFinishLoad將無法​​看到該變量。

+0

感謝您的回答! –

0

在您viewDidLoad中設置微調

標籤
spinner.tag = 90; 

and in webViewDidFinishLoad method use the following line

UIActivityIndicatorView *activity =(UIActivityIndicatorView *) [self.view viewWithTag:90]; 
[activity stopAnimating]; 
    or declare spinner in .h file so that you can use it any where. 
相關問題