Oli*_*ver 0 iphone hide uiactivityindicatorview
我有一个像这样编写的自定义UIWebView:
@interface MiniWebViewController : UIViewController {
NSString* destinationURL;
UIWebView* webView;
UIActivityIndicatorView* activityIndicatorView;
}
@property (nonatomic, retain) NSString* destinationURL;
@property (nonatomic, retain) IBOutlet UIWebView* webView;
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* activityIndicatorView;
- (void) run;
@end
Run Code Online (Sandbox Code Playgroud)
@synthesize destinationURL;
@synthesize webView;
@synthesize activityIndicatorView;
- (id) initWithFrame:(CGRect)frame {
if (self = [super initWithNibName:@"MiniWebView" bundle:nil]) {
self.destinationURL = @"";
self.view.frame = frame;
self.activityIndicatorView.center = self.webView.center;
}
return self;
}
- (void) run {
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.destinationURL]]];
}
Run Code Online (Sandbox Code Playgroud)
它被称为从另一个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];
}
Run Code Online (Sandbox Code Playgroud)
进入IB hidesWhenStopped也被检查.一切都是相互联系的.IB指示器的样式设置为"大白".
运行时,指标不大,但很小.
它已成功启动和停止(触发委托调用),但在停止时不会隐藏.
有什么问题 ?我没看到......
仔细查看代码后,您将在init方法中修改UIActivityView .改变这些,使他们在你的viewDidLoad.在init,您尚未加载视图,因此,您的控制器中尚未创建这些对象的实例.
这些是需要移动的声明:
self.activityIndicatorView.hidesWhenStopped = YES;
self.view.frame = frame;
self.activityIndicatorView.center = self.webView.center;
Run Code Online (Sandbox Code Playgroud)
这可以追溯到Objective-C的基础:向nil对象发送消息...返回nil.这有时很烦人,因为没有编译时警告,也没有任何运行时异常 - 该语言的一个特性.
| 归档时间: |
|
| 查看次数: |
7333 次 |
| 最近记录: |