2012-03-15 90 views
1

我打開一個UIwebview,並從其中一個網站獲得一些URL,然後將這些URL保存在一個數組中,現在我想在webview中以一段時間間隔逐個打開這些URL。我試圖通過運行一個for循環並加載每個urls,但它並沒有打開每個URL,循環完成後它只打開循環中的最後一個URL。 這裏是我的循環代碼:在uiwebview中加載URL

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]]]]; 

} 

任何人都可以給我建議,如果我做一些錯誤或任何人都可以幫助我,我怎麼能做到這一點。

編輯:

-(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。您的計時器將需要完全在屏幕繪圖生命週期之外進行操作。

如果你用一些JavaScript創建了一個HTML頁面,並且通過遍歷URL數組的內容將它們加載到一個完整的頁面iframe中,那麼怎麼辦?

編輯

您的應用程序將需要存儲,你都呈現相同的方式,你已經存儲FinalUrlArray當前URL的索引。使用您的按鈕中的TouchUpInside事件調用的方法加載第一個URL,然後按照@ user1213334的答案中的建議啓動計時器,以在間隔後再次調用該方法。每次您需要增加方法中的索引時,直到最後。確保對方法的每次調用都會爲下一次加載啓動一個新的定時器,除非您到達最後。

+0

我們有一個按鈕,並在該按鈕上按我運行此循環,並從數組中獲取URL。那麼代碼中的哪些變化可以使其工作,計時器又如何呢?我可以在哪裏使用該計時器,以便在新URL開始加載之前整個頁面都可以加載。 我不能採取辦法,我可以使用HTML頁面和JavaScript,因爲我正在做加載時間計算和其他一些事情,以及我使用的是webview。 – 2012-03-15 06:14:47

+0

@Alok我已經添加了一些更多的建議,但如果您仍然陷於困境,您可能需要添加更多代碼。 – 2012-03-15 22:59:01

+0

嘿戴夫,我已經編輯我的問題與按鈕按下功能和DidLoadFinish。請注意,按下按鈕是一個事件處理程序,它假設從WebView中將數組加載到webview的webview中。請幫忙。 – 2012-03-16 17:35:18

0

我覺得你的問題是由於這些原因之一:

1)你試圖太快加載這些URL。 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秒的時間間隔。 如果你需要實現你沒有改變的相同代碼,那麼我建議你寫下「重複:否」,並安排上一個任務的末尾。它允許在一個任務的結束和另一個任務的開始之間進行20秒的間隔。

+0

網址不應該被加載得很快,那是我正在使用睡眠。如果它仍然會加載網址,我不知道。在xcode中調度tast!你能幫我舉一些例子嗎? – 2012-03-15 06:55:23

+0

我已編輯我的帖子來幫助你。但我不認爲那個任務調度比睡眠功能要好得多 – Gargo 2012-03-15 10:08:39

+0

我會試試這個,並且會回到你身邊。非常感謝。 :) – 2012-03-15 11:17:25