iphone - 根据 UIWebView 是否正在加载,事件指示器不显示

标签 iphone objective-c uiwebview uiactivityindicatorview

抱歉,如果这很简单。基本上,这是我的代码:

MainViewController.h:

#import "FlipsideViewController.h"

@interface MainViewController : UIViewController <UIWebViewDelegate, FlipsideViewControllerDelegate> {
    IBOutlet UIWebView *webView;
    IBOutlet UIActivityIndicatorView *spinner;
}

- (IBAction)showInfo;

@property(nonatomic,retain) UIWebView *webView;
@property(nonatomic,retain) UIActivityIndicatorView *spinner;

@end

MainViewController.m:

#import "MainViewController.h"
#import "MainView.h"

@implementation MainViewController

@synthesize webView;
@synthesize spinner;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}

 - (void)viewDidLoad {

     NSURL *siteURL;
     NSString *siteURLString;

     siteURLString=[[NSString alloc] initWithString:@"http://www.site.com"];

     siteURL=[[NSURL alloc] initWithString:siteURLString];

     [webView loadRequest:[NSURLRequest requestWithURL:siteURL]];

     [siteURL release];
     [siteURLString release];

 [super viewDidLoad];
 }

- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller {

    [self dismissModalViewControllerAnimated:YES];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [spinner stopAnimating];  
    spinner.hidden=FALSE;
    NSLog(@"viewDidFinishLoad went through nicely");
}

- (void)webViewDidStartLoad:(UIWebView *)webView {     
    [spinner startAnimating];     
    spinner.hidden=FALSE;
    NSLog(@"viewDidStartLoad seems to be working");
}

- (IBAction)showInfo {    

    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}

- (void)dealloc {
    [spinner release];
    [webView release];
    [super dealloc];
}


@end

不幸的是,我的日志中没有任何内容,而且由于某种原因,UIActivityIndi​​cator 似乎从未出现过。这里出了什么问题?

谢谢大家

jack

最佳答案

您需要设置 UIWebView 委托(delegate)。您实现了该协议(protocol),但您从不告诉 UIWebView 这个类是委托(delegate),因此永远不会调用这些方法。

webView.delegate = self;

另外,您可能想看看这个 question/answer关于如何实现 UIWebViewDelegate 方法。

关于iphone - 根据 UIWebView 是否正在加载,事件指示器不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2480550/

相关文章:

iphone - 如何让vimeo视频在iPhone/iPad上自动播放?

iphone - 在 iphone 上删除数据 sqlite - 数据库被锁定

iphone - 如何在iPhone中使用CATextLayer设置视频中的文本位置?

ios - Facebook iOS sdk 获取用户 ID

ios - 如何将联系人字符串从一个数组添加到另一个数组

iphone - 获取当前UIView的ID objective-c iphone

ios - 估计 UIWebView 的高度

html - 在 UIWebView 中缩放 .htm 文件

iphone - 移动CC相机

ios - 从二维码加载 url 到网页 View swift Xcode