这是我的第一个iOS应用,所以我可能错过了很简单的东西。请善待。我一直在撕扯头发,我真的可以帮忙。
基本上,这是一个只加载UIWebView的单页面应用程序。我有一个连接的外部附件(蓝牙条形码扫描仪),基本上我想做的是当应用程序接收到扫描时,我想在我的ViewController中调用一个方法并相应地更新UIWebView。
我可以连接扫描仪,加载第一个视图,加载初始网页,扫描条形码并在控制器中调用方法。
我似乎无法弄清楚如何从控制器中的方法更新UIWebView。它将url字符串记录到我的调试器区域,但从未实际更新webview。我很确定我有一些代表团错误或者我的webview实例。这里必须有一些我想念的胶水代码。
#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
#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调试技巧也不是最好的。
非常感谢任何帮助!
答案 0 :(得分:0)
您的网页视图似乎永远不会被分配或添加到您的主视图中。你可能正在谈论一个零实例。
除非您的网页视图来自XIB文件(我怀疑因为它未在您的文件中声明为IBOutlet),请尝试将以下内容添加到您的viewDidLoad:
self.page = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.page];