Я создаю приложение в Objective-c для IOS, и мне нужно иметь возможность прокручивать кучу веб-страниц и, используя встроенная функция javascript возвращает некоторые значения JSON.Objective-c [For loop] загружает HTML в UIWebview и извлекает данные из функции JavaScript
Я использую страницы в другом месте приложения, и javascript работает по мере необходимости. На этом этапе я сохраняю ответ JSON, но поскольку пользователь не может просматривать каждую страницу, приложение не обязательно будет иметь все значения JSON для проверки.
Раздел ниже - это то, что я использую, чтобы перебирать все страницы, загружать в строку HTML и запускать функцию javascript. Проблема в том, что значения всегда возвращаются пустым.
-(void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"finished loading");
NSString *jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
}
for (int i = 1; i <= shifts; i++)
{
ontracMultipleWevViewController *RT9909 = [viewControllerDictionary objectForKey:[NSString stringWithFormat:@"Shift %d RT9909", i]];
if (RT9909 && [RT9909.viewControllers count] > 0) {
for (ontracRTViewController *r9909 in RT9909.viewControllers) {
UIWebView *webView = [[UIWebView alloc] init];
[webView setDelegate: self];
[webView loadHTMLString:r9909.htmlString baseURL:[NSURL URLWithString:r9909.urlToLoad]];
[self webViewDidFinishLoad:webView];
[self.view addSubview:webView];
if([self webViewDidFinishLoad:webView]){
r9909.jsonValues = [webView stringByEvaluatingJavaScriptFromString:@"getFields()"];
if(r9909.jsonValues != nil && ![r9909.jsonValues isEqualToString:@""] && rt9909ShiftCount == 0){
........rest of code
Примечание: Я получаю никаких ошибок или NSLogs, чтобы предположить, какие проблемы
Вы называете себя 'webViewDidFinishLoad:'? Не должен ли это делегировать делегат, когда webView выполнил загрузку? – Larme
@ Larme Спасибо за ваш ответ, я забыл добавить этот метод на самом деле. – jampez77
@ Larme Также забыл все о делегате, идя теперь в это. Спасибо – jampez77