1

在视图中确实加载了我有这个段:

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

哪个工作正常,

然而更进一步:webViewDidFinishLoad我有:

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

并且微调器的范围已经丢失。我还没有将微调器作为出口或属性/合成 - 仍在掌握它。我认为一旦我掌握了范围,它应该使 obj-c 能力更好!

4

3 回答 3

4

并且微调器的范围已经丢失。

spinner是一个局部变量。一旦代码到达其声明后最近的右花括号,它就会消失。如果您不希望它发生,spinner请为类或类扩展创建一个实例变量。

实例变量在接口声明或类扩展声明之后的花括号内声明,例如:

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

或者

// In the implementation file...
@interface MyClass() /*class extension*/ {
    ...
    UIActivityIndicatorView *spinner;
}
...
@end
于 2013-04-12T09:53:51.170 回答
1

您需要在头文件中使微调器成为实例变量,否则webViewDidFinishLoad将无法看到该变量。

于 2013-04-12T09:53:39.280 回答
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.
于 2013-04-12T09:59:13.920 回答