2016-07-05 3 views
-1

У меня есть UIWebView на главном UIViewController, который отлично работает. Я использую эту команду для передачи данных и снова все хорошо:Звоните в веб-представление из другого видаКонтроллер

[self.dWebView stringByEvaluatingJavaScriptFromString: myString]; 

Проблема заключается в том, что я добавил еще UIViewController (QRViewController), который считывает данные из QR-теге, и я хочу, чтобы отправить его таким же образом. Это мой код на QRViewController, но ничего не происходит:

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

Можно ли сделать это таким образом? Что-то не хватает?

Спасибо заранее.

ответ

1

добавить NSString * ул объекта к вашему ViewController

передать его как: _viewController.str = qrString;

[self.dWebView stringByEvalaluatingJavaScriptFromString: self.str];

Это будет работать

+0

Спасибо, я тоже попробовал. Я отклоняю QRViewController с помощью [self rejectViewControllerAnimated: YES complete: nil]; и я ожидаю, что viewWillAppear или viewDidAppear на главном ViewController будут вызываться для отправки строки, но они не являются. – MorZa

+0

вы пробовали написать свой код в блоке? [self rejectViewControllerAnimated: YES завершение:^{ [self.dWebView stringByEvaluationJavaScriptFromString: myString]; }]; –

+1

Else сделать делегат для возврата данных. Это, безусловно, будет работать –

1

Вы создаете второй экземпляр того же UIViewController класса, вызвав этот код:

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

_viewController не указывает на отображаемым на экране, это новый копия, которая в настоящее время не отображается.

Вам нужно получить дескриптор предыдущего экземпляра, отображаемого в данный момент, и передать данные обратно на него. Это будет зависеть от того, как вы создали это приложение.

Например:

  • Если присутствует модально, вам нужно будет получить self.presentingViewController.
  • Если вы используете навигационный контроллер, вы можете получить доступ к свойству viewControllers, чтобы получить дескриптор на предыдущем.
Смежные вопросы