2016-07-05 13 views
-1

UIViewControllerにはUIWebViewがあり、正常に動作します。私は、データを送信するためにこのコマンドを使用して、もう一度それはすべて良いことだ:別のviewControllerからWebビューを呼び出す

[self.dWebView stringByEvaluatingJavaScriptFromString: myString]; 

問題は、私はQRタグからデータを読み取り、私はそれを同じ方法で送信する別のUIViewControllerQRViewController)を追加したことです。 これは私のコードはQRViewControllerであるが、何も起こりません:

ViewController* _viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
[_viewController.dWebView stringByEvaluatingJavaScriptFromString: qrString]; 

それはこのようにそれを行うことは可能ですか?何か不足していますか?

ありがとうございました。

答えて

1

としてあなたのViewController

パスをしたNSString * strのオブジェクトを追加します。_viewController.str = qrString。

[self.dWebView stringByEvaluatingJavaScriptFromString:self.str];

これは

+0

ありがとう、私もそれを試しました。 QRViewControllerを[self dismissViewControllerAnimated:YES completion:nil]で閉じます。私は、メインのViewController上のviewWillAppearまたはviewDidAppearが文字列を送信するために呼び出されますが、そうではないと考えています。 – MorZa

+0

あなたのコードをブロックで書き込みしようとしましたか? [self dismissViewControllerAnimated:はい完了:^ { [self.dWebView stringByEvaluatingJavaScriptFromString:myString]; }]; –

+1

これ以外の場合、データをバックパスするデリゲートを作成します。それは確かに動作します –

1

あなたはこのコードを呼び出すことにより、同じUIViewControllerクラスの2番目のインスタンスを作成している動作します:

ViewController* _viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

_viewControllerが画面上に表示さ1を指していない、それは新しいですが現在表示されていないコピー。

現在表示されている前のインスタンスを取得し、そのデータを戻す必要があります。これはあなたがこのアプリをどのように構築したかによって異なります。例えば

  • 存在モーダル場合は、self.presentingViewControllerを取得する必要があります。
  • navigationControllerを使用している場合は、viewControllersプロパティにアクセスして前のハンドルを取得できます。
関連する問題