2012-03-15 3 views
1

Я открываю UIwebview, и с одного из сайтов я получаю несколько URL-адресов. Затем я сохраняю эти URL-адреса в массиве, теперь я хочу открыть этот URL один за другим в webview с некоторым временным интервалом. Я попытался запустить цикл for и загрузить каждый URL-адрес, но он не обрабатывает все URL-адреса, после завершения цикла он открывает только последний URL-адрес в цикле. Вот мой код для цикла:Загрузка URL-адреса в uiwebview

for(int z = 0; z<[FinalUrlArray count]; z++){ 
    sleep(20.0); 
    NSLog(@"URLs are %@", [FinalUrlArray objectAtIndex:z]); 
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[FinalUrlArray objectAtIndex:z]]]]; 

} 

Может кто-нибудь предложить мне, если я делаю какую-то ошибку или может кто-нибудь помочь мне, как я могу это сделать.

EDIT:

-(void)buttonPressed:(id)sender{ 
    FinalUrlArray = [[NSMutableArray alloc] init]; //CODE FOR creating FinalURLArray 
    for(int z = 0; z<[FinalUrlArray count]; z++){ 
     NSLog(@"URLs are %@", [FinalUrlArray objectAtIndex:z]); 
     [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:   [FinalUrlArray objectAtIndex:z]]]]; 
    } 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView1 { 
    NSLog(@"Current Url is %@", currentURL); 
} 

ответ

0

Вы называете этот цикл от одного из методов, как ViewDidLoad?

Помните, что приложение обработает весь цикл до того, как экран будет нарисован, поэтому UIWebView получит только последний URL. Ваш таймер должен работать полностью за пределами жизненного цикла экрана.

Что делать, если вы создаете HTML-страницу с каким-то JavaScript и имеете возможность перебирать содержимое массива URL-адресов, загружая их в полноэкранный iframe?

EDIT

Ваше приложение должно будет хранить индекс текущего URL вы показываете так же, как вы уже хранящее FinalUrlArray. Загрузите первый URL-адрес, используя метод, вызванный из вашего события TouchUpInside для вашей кнопки, а затем запустите таймер, как предлагается в ответе от @ user1213334, чтобы снова вызвать метод после интервала. Каждый раз вам нужно увеличивать индекс в методе до тех пор, пока вы не дойдете до конца. Убедитесь, что каждый вызов метода запускает новый таймер для следующей загрузки, если вы не достигнете конца.

+0

У нас есть кнопка, и на этой кнопке нажмите i m, запустив этот цикл и получив URL-адрес из массива.Итак, какие изменения в коде могли бы заставить его работать, и как насчет таймера? где я могу использовать этот таймер, чтобы вся страница загружалась до начала загрузки нового URL-адреса. Я не могу принять подход, где я могу использовать HTML-страницу и javascript, потому что я занимаюсь вычислениями времени загрузки и несколькими другими вещами, а для этого я использую webview. –

+0

@Alok Я добавил еще несколько предложений, но вам может потребоваться добавить еще ваш код, если вы все еще застряли. –

+0

Эй, Дейв, я редактировал свой вопрос с помощью функции нажатия кнопки и DidLoadFinish. Обратите внимание, что нажатие кнопки - это обработчик событий, который предположительно загружает URL-адрес в webview из массива в WebView. Пожалуйста помоги. –

0

Я думаю, ваша проблема в том, что одной из этих причин:

1) вы пытаетесь загрузить эти адреса слишком быстро.

2) функция сна замораживает все приложение. Как планировать планирование задач вместо него?

Обновлено

The original article is here

Чтобы запланировать одну задачу, вы можете использовать что-то вроде этого:

NSTimer *timer; 
if (!myTimer) { 
     myTimer = [NSTimer scheduledTimerWithTimeInterval:20 
           target:self selector:@selector(doTimer:) 
           userInfo:nil 
           repeats:YES]; 
    } 

где "doTimer:" функция:

- (void)doTimer:(NSTimer *)timer 

Чтобы запланировать большую задачу вы также можете планировать задачи с различными интервалами, которые увеличиваются в цикле. Он позволяет установить интервал 20 секунд между началом двух задач. Если вам нужно реализовать тот же код, который вы написали без изменений, я советую вам написать «repeat: NO» и запланировать еще одну задачу в конце предыдущей. Это позволяет сделать интервал в 20 секунд между окончанием одной задачи и началом другой задачи.

+0

URL-адреса не должны загружаться быстро, thats y Я использую сон. Я не знаю, будет ли он быстро загружать URL-адреса. Планирование вкуса в xcode! не могли бы вы помочь мне с некоторым примером. –

+0

Я отредактировал мое сообщение, чтобы помочь вам. Но я не думаю, что планирование задач намного лучше, чем функция сна. – Gargo

+0

Я попробую это и вернусь к u. Большое спасибо. :) –

Смежные вопросы