これは私の最初の iOS アプリなので、非常に単純なものが欠けている可能性があります。親切にしてください。私は髪を引き裂いていて、本当に助けが必要です.
アプリの概要
基本的に、これは UIWebView をロードするだけの単一ページ アプリケーションです。接続する外部アクセサリ (Bluetooth バーコード スキャナー) があり、基本的にやりたいことは、アプリがスキャンを受信したときです。ViewController でメソッドを呼び出し、それに応じて UIWebView を更新します。
機能しているもの
スキャナーを接続し、最初の Web ページをロードする最初のビューをロードし、バーコードをスキャンして、コントローラーでメソッドを呼び出すことができます。
私の問題
コントローラーのメソッドから UIWebView を更新する方法がわかりません。URL文字列をデバッガー領域に記録しますが、実際にWebビューを更新することはありません. 委任が間違っているか、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 デバッグ スキルは最高ではありません。
どんな助けでも大歓迎です!