iPhone-UIActivityIndicatorView在停止时不隐藏

iPhone-UIActivityIndicatorView在停止时不隐藏,iphone,hide,uiactivityindicatorview,Iphone,Hide,Uiactivityindicatorview,我有一个自定义UIWebView,如下所示: H M 它被称为来自另一个ViewController的初始化: - (void) aFunction { MiniWebViewController* oneViewController = [[MiniWebViewController alloc] initWithFrame:CGRectMake(/*Some Rect*/]; oneViewController.webView.tag = i;

我有一个自定义UIWebView,如下所示:

H M 它被称为来自另一个ViewController的初始化:

- (void) aFunction {
    MiniWebViewController* oneViewController = [[MiniWebViewController alloc] initWithFrame:CGRectMake(/*Some Rect*/];
            oneViewController.webView.tag = i;
            oneViewController.destinationURL = /*SomeURL*/;
            oneViewController.webView.delegate = self;

            [self.view addSubview:oneViewController.view]; /* the Web view is inside this one */
            [oneViewController run];
    }

    - (void) webViewDidFinishLoad:(UIWebView *)webView {
        int webViewID = webView.tag;
        MiniWebViewController* webViewController = [self.webViews objectAtIndex:webViewID];
        [webViewController.activityIndicatorView stopAnimating];
    }

    - (void)webViewDidStartLoad:(UIWebView *)webView {
        int webViewID = webView.tag;
        MiniWebViewController* webViewController = [self.webViews objectAtIndex:webViewID];
        [webViewController.activityIndicatorView startAnimating];
    }
也会检查阻止时的IB隐藏。一切都是联系在一起的。指示器的样式设置为“大白色”为IB

运行时,指示灯不是大而是小。
它已成功启动和停止(代理调用已触发),但停止时不会隐藏


有什么问题吗?我看不出…

仔细查看代码后,您正在修改
init
方法中的UIActivityView。更改它们,使它们位于您的
视图中。在初始化时,视图尚未加载,因此,控制器中尚未创建这些对象的实例

以下是需要移动的语句:

self.activityIndicatorView.hidesWhenStopped = YES;

self.view.frame = frame;
self.activityIndicatorView.center = self.webView.center;

这可以追溯到Objective-C的一个基本原理:向
nil
对象发送消息…返回
nil
。这有时是一个恼人的特性,因为没有编译时警告,也没有任何运行时异常——这是该语言的一个特性。

仔细查看代码后,您正在修改
init
方法中的UIActivityView。更改它们,使它们位于您的
视图中。在初始化时,视图尚未加载,因此,控制器中尚未创建这些对象的实例

以下是需要移动的语句:

self.activityIndicatorView.hidesWhenStopped = YES;

self.view.frame = frame;
self.activityIndicatorView.center = self.webView.center;

这可以追溯到Objective-C的一个基本原理:向
nil
对象发送消息…返回
nil
。这有时是一个恼人的特性,因为没有编译时警告,也没有任何运行时异常——这是该语言的一个特性。

我很笨,XCode/cocoa真的没有帮助

我加载了一个不存在的错误XIB名称。 所以我要求加载一些不存在的东西,应用程序仍然可以工作,甚至可以显示和使用不存在的对象。直到一个呼叫无法按预期工作。没有撞车。。。
这是胡说八道。

我很蠢,XCode/cocoa真的帮不了什么忙

我加载了一个不存在的错误XIB名称。 所以我要求加载一些不存在的东西,应用程序仍然可以工作,甚至可以显示和使用不存在的对象。直到一个呼叫无法按预期工作。没有撞车。。。
这是胡说八道。

如果您使用的是Xcode 3.x,您是否保存了XIB?它是否正确连接到视图控制器?将
Log
语句放入测试中,以确保您的指示器不是零<代码>NSLog(@“indicator nil:%i”,activityindicator视图==nil)@Wayne Hartman:它不是零,当然,是的,XIB被保存了。仅供参考,我正在运行XCode 4。现在,我手动隐藏它。但我想知道为什么它看起来不大,为什么停止时它不隐藏……如果您使用的是Xcode 3.x,您是否保存了XIB?它是否正确连接到视图控制器?将
Log
语句放入测试中,以确保您的指示器不是零<代码>NSLog(@“indicator nil:%i”,activityindicator视图==nil)@Wayne Hartman:它不是零,当然,是的,XIB被保存了。仅供参考,我正在运行XCode 4。现在,我手动隐藏它。但我想知道为什么它看起来不大,为什么停止时它不隐藏……也许你是对的,但从那里调用时框架和活动指示器中心的设置是正确的。这里的第一行仅用于测试目的,因为这个属性已经设置为IB。我可以删除它,它不会改变任何东西。即使移动到viewDidLoad。错误:当移动到viewDidLoad时,self.activityIndicatorView.center=self.webView.center不再工作。我从类中删除了self.activityIndicatorView.hidesWhenStopped=YES。我仍然设置为IB。问题仍然存在,我不认为这可能是由于帧初始的错误位置造成的。您是否能够手动隐藏活动:
[self.activityIndicatorView setHidden:YES]是。这就是为什么我不明白它为什么会自动隐藏的原因。也许你是对的,但是当从那里调用时,框架和活动指示器中心的设置是正确的。这里的第一行仅用于测试目的,因为这个属性已经设置为IB。我可以删除它,它不会改变任何东西。即使移动到viewDidLoad。错误:当移动到viewDidLoad时,self.activityIndicatorView.center=self.webView.center不再工作。我从类中删除了self.activityIndicatorView.hidesWhenStopped=YES。我仍然设置为IB。问题仍然存在,我不认为这可能是由于帧初始的错误位置造成的。您是否能够手动隐藏活动:
[self.activityIndicatorView setHidden:YES]是。这就是我不明白为什么它会自动隐藏的原因。
self.activityIndicatorView.hidesWhenStopped = YES;

self.view.frame = frame;
self.activityIndicatorView.center = self.webView.center;