0

这是我的第一个 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 调试技能也不是最好的。

任何帮助将不胜感激!

4

1 回答 1

0

看起来您的 webview 从未被分配或添加到您的主视图中。您可能正在与一个 nil 实例交谈。

除非您的 Web 视图来自 XIB 文件(我怀疑它没有在您的 heder 文件中声明为 IBOutlet),否则请尝试在您的 viewDidLoad 中添加类似这样的内容:

self.page = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.page];
于 2012-04-25T19:39:34.827 回答