2016-02-11 3 views
-1

У меня есть пользовательская ячейка, содержащая веб-представление. Дело в том, что я хотел бы только вызвать запрос на загрузку URL-адреса один раз для веб-представления. Сейчас я загружаю запрос в cellForRowAtIndex: и, конечно, это вызывает многократный запрос. Как я могу убедиться, что запрос сделан только один раз и что является наиболее оптимальным способом для этого?UIWebview в UITableViewCell

+0

сделал только один раз или просьбу, когда клетка видна пользователю? –

+0

Или вы можете иметь флаг bool и установить его NO, после первого раза в ячейке для метода индекса rowat. –

ответ

0

Поддержание структуры данных для хранения ответов от веб-запроса позволит решить этот сценарий. скажем, для indexpath с первого взгляда в структуре данных (NSMutableArray будет более подходящим), поскольку вы ищете данные в первый раз, вы не найдете их, а затем получите ответ &, который хранит его в структуре данных. Затем второй раз, когда ячейка на том же indexpath вы просматриваете в структуре данных, вуаля на этот раз вам не нужно делать запрос.

Для простоты я использую NSMutableDictionary имени responseData

  1. инициировать его внутри viewDidLoad
  2. в запросе cellForRowAtIndexPath

    UITableViewCell *cell = //deque the cell 
    
    NSString *responseKey = [NSString stringWithFormat:"%d,%d", indexPath.section,indexPath.row]; 
    
    NSString *htmlData = responseData[responseKey]; 
    
    if(htmlData == nil) 
    { 
        htmlData = //whatever the way do your request, put the response in the htmlData. as you are doing asynchronous loading of the web-request, set the cell's webView in the completion. NB:: do gui related work on gui/main thread. 
    
        responseData[responseKey] = htmlData; 
    } 
    
    //set the htmlData to your, cell's webView 
    
+0

для получения справки по содержанию html и 'UIWebView' можно посмотреть в [this] (http://stackoverflow.com/questions/992348/reading-html-content-from-a-uiwebview) –

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