在视图中加载我有这个部分:
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActionSheetStyleBlackTranslucent];
[self.view addSubview:spinner];
[spinner startAnimating];
哪种方法正常,
然而进一步向下:webViewDidFinishLoad
我有:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[spinner stopAnimating];
}
旋转器的范围已经丢失。我没有旋转器作为出口或属性/合成 - 仍然掌握它。我认为一旦我掌握了范围,它应该使对象能力更好!
答案 0 :(得分:4)
旋转器的范围已经丢失。
spinner
是本地变量。一旦代码在声明后达到最接近的大括号,它就会消失。如果您不希望它发生,请使spinner
成为类的实例变量或类扩展。
实例变量在接口声明或类扩展声明之后在花括号内声明,例如:
// In the header file...
@interface MyClass {
...
UIActivityIndicatorView *spinner;
}
...
@end
或
// In the implementation file...
@interface MyClass() /*class extension*/ {
...
UIActivityIndicatorView *spinner;
}
...
@end
答案 1 :(得分:1)
您需要在头文件中使微调器成为实例变量,否则webViewDidFinishLoad
将无法看到该变量。
答案 2 :(得分:0)
在viewDidLoad中为spinner设置标签
spinner.tag = 90;
并在webViewDidFinishLoad方法中使用以下行
UIActivityIndicatorView *activity =(UIActivityIndicatorView *) [self.view viewWithTag:90];
[activity stopAnimating];
or declare spinner in .h file so that you can use it any where.