0

これは私の最初の 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 デバッグ スキルは最高ではありません。

どんな助けでも大歓迎です!

4

1 に答える 1

0

Webビューが割り当てられたり、メインビューに追加されたりすることはないようです。あなたはおそらく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 に答える