从另一个视图调用Web视图控制器
问题描述:
我有一个UIWebView
主要UIViewController
它工作正常。我用这个命令来发送数据,并再次这一切都很好:从另一个视图调用Web视图控制器
[self.dWebView stringByEvaluatingJavaScriptFromString: myString];
的问题是,我添加了另一个UIViewController
(QRViewController
),采用QR标签读取数据,我想送它以同样的方式。 这是我的代码在QRViewController
但什么也没有发生:
ViewController* _viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[_viewController.dWebView stringByEvaluatingJavaScriptFromString: qrString];
是否有可能做这种方式?有什么遗漏吗?
在此先感谢。
答
添加的NSString * STR对象添加到您的ViewController
传为:_viewController.str = qrString;
[self.dWebView stringByEvaluatingJavaScriptFromString:self.str];
这将工作
答
你正在创建相同UIViewController
类的第二个实例调用此代码:
ViewController* _viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
_viewController
不指着一个在屏幕上可见,这是一个新的当前未显示的副本。
您需要获取当前显示的前一个实例的句柄并将数据传回给它。这将取决于你如何构建这个应用程序。
例如:
- 如果存在有模式,你将需要获得
self.presentingViewController
。 - 如果您使用navigationController,则可以访问其
viewControllers
属性以获取前一个的句柄。
谢谢,我也试过了。我解雇了QRViewController [self dismissViewControllerAnimated:YES completion:nil];我期望viewWillAppear或viewDidAppear在主ViewController将被调用来发送字符串,但他们不是。 – MorZa
你有没有试过在块中写代码? [self dismissViewControllerAnimated:YES completion:^ { [self.dWebView stringByEvaluatingJavaScriptFromString:myString]; }]; –
否则让委托人回传数据。它一定会奏效 –