如何在viewDidLoad之后更新UIWebView?

时间:2012-04-25 19:22:55

标签: objective-c ios uiwebview

这是我的第一个iOS应用,所以我可能错过了很简单的东西。请善待。我一直在撕扯头发,我真的可以帮忙。

应用概述

基本上,这是一个只加载UIWebView的单页面应用程序。我有一个连接的外部附件(蓝牙条形码扫描仪),基本上我想做的是当应用程序接收到扫描时,我想在我的ViewController中调用一个方法并相应地更新UIWebView。

什么工作

我可以连接扫描仪,加载第一个视图,加载初始网页,扫描条形码并在控制器中调用方法。

我的问题

我似乎无法弄清楚如何从控制器中的方法更新UIWebView。它将url字符串记录到我的调试器区域,但从未实际更新webview。我很确定我有一些代表团错误或者我的webview实例。这里必须有一些我想念的胶水代码。

我的代码HelloWorldViewController.h

#import <UIKit/UIKit.h>
#import "KScan.h"

@interface HelloWorldViewController : UIViewController <UIWebViewDelegate> { 

  IBOutlet UIWebView *page;
  IBOutlet UILabel *myLabel;

  Boolean IsFirstTime;

  KScan *kscan;

}

- (void)setFirstTime;
- (void)DisplayConnectionStatus; 
- (void)DisplayMessage:(char *)Message; 
- (void)newBarcodeScanned:(NSString *)barcode;
- (void)loadBarcodePage:(NSString *)barcode;

@property (nonatomic, retain) KScan *kscan;
@property (nonatomic, retain) UIWebView *page;
@property (nonatomic, retain) UILabel *myLabel;

@end 

我的代码HelloWorldViewController.m

#import "HelloWorldViewController.h"
#import "common.h"

@implementation HelloWorldViewController

@synthesize myLabel;
@synthesize page;
@synthesize kscan;


- (void)setFirstTime
{
    IsFirstTime = true;
}


- (void)viewDidLoad
{
    self.kscan = [[KScan alloc] init];

    [super viewDidLoad];
    page.scrollView.bounces = NO;

    //page.delegate = self;

   [page loadRequest:[NSURLRequest requestWithURL:[NSURL   URLWithString:@"http://192.168.0.187:3000"]]];

}


- (void) newBarcodeScanned:(NSString *)barcode
{
NSLog(@"%s[%@]",__FUNCTION__, barcode);

[self loadBarcodePage:barcode];
} 

- (void)loadBarcodePage:(NSString *)barcode
{
NSLog(@"%s",__FUNCTION__);
NSString *url = [[NSString alloc] initWithFormat:@"http://www.google.com/%@", barcode];
NSLog(@"%@", url);
[page loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]]; 

}

- (void)viewDidUnload
{
    [myLabel release];
    myLabel = nil;
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:   (UIInterfaceOrientation)interfaceOrientation
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    } else {
       return YES;
    }
}

- (void)dealloc {
   [page release];
   [kscan release];
   [myLabel release];
   [super dealloc];
}
@end

基本上,我只是在扫描条形码时尝试将google.com加载到我的网页webview中。我的日志语句使用正确的URL进行记录,但这行代码不起作用。

[page loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];

我没有收到任何错误,我的xCode调试技巧也不是最好的。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您的网页视图似乎永远不会被分配或添加到您的主视图中。你可能正在谈论一个零实例。

除非您的网页视图来自XIB文件(我怀疑因为它未在您的文件中声明为IBOutlet),请尝试将以下内容添加到您的viewDidLoad:

self.page = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.page];