2015-12-10 3 views
0

Я работаю над проектом. Я реализовал расширяемую ячейку, у меня есть некоторая информация о ячейке, и когда я нажимаю на нее, она расширяется, показывая описание. Я загружаю описание в UIWebView, так как принимаю его в html формате от JSON.webView вызывает задержку в виде таблицы

У меня возникла проблема в том, что прокрутка в UITableView отстает, и Im 99% уверен, что это UIWebView, вызывающий проблему, поскольку у меня есть другие виды таблиц, а также с нерасширяемыми ячейками, и они прокручивают все гладкий; плавный.

Я думаю, что я мог бы решить эту проблему, не пуская таблицу в начале загрузки содержимого html, загружая ее только по методу Didselect для каждой ячейки, которую я выбираю.

Но я с трудом справляюсь с этим. В любом случае я могу загрузить UIWebView только для 1 конкретной ячейки (в этом случае только ячейку, которую я нажимаю). Любая помощь приветствуется. Если у вас есть другой способ решить эту проблему, не стесняйтесь давать предложения.

Заранее спасибо

PS: Я смотрел на расширяемой мобильный учебник для swift в youtube и сделал более или менее то же самое.

+0

Возможно ли загрузить ваш контент в качестве атрибутной строки? Потому что WebView будет всегда медленным при прокрутке. Другая идея заключается в том, что вы загружаете свой контент, делаете скриншот из своего Контента и используете изображение вместо WebView. – derdida

+0

Мне нужно, чтобы ссылки были доступны для редактирования, и текст не должен редактироваться, и вы можете просматривать его только. –

+0

Это все еще возможно с атрибутами Strings: http://stackoverflow.com/questions/21629784/make-a-clickable-link-in-an-nsattributedstring-for-a-uitextfield-or-uilabel – derdida

ответ

0

использование GCD займет процесс загрузки UIWebView в фоновом режиме и нагрузки UIWebView когда нагрузка complte

+0

Я использую GCD, но это не тот процесс, который создает всю проблему, содержимое, загруженное и находящееся в uiwebview, вызывает отставание. Мне нужно пустое и загружать только тогда, когда я нажимаю на ячейку. –

+0

in didSelectRowAtIndexPath добавить UIWebview в ячейку subview и loadURLRequest и показать активность до полной загрузки – vaibby

0
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ 
//Background Thread 
NSData* data = [NSData dataWithContentsOfURL:@"YOUR URL"]; 
dispatch_async(dispatch_get_main_queue(), ^(void){ 
    //Run UI Updates 
    [mWebView loadData:data MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil]; 
}); 
}); 
+0

1. Это не Swift, его ObjC. 2. Измените ответ, а не создавайте новые. – derdida

0

Ok Guys vaibby был прав. Спасибо всем за ответы.

Я использовал GCD, но он был вызван в неправильном месте. Просто хотел сообщить, что проблема решена. То, что я сделал, было первым шагом, кэшировавшим изображения UItableView. В качестве второго шага и очень важного я внедрил библиотеку Async в свой проект и использовал его в функции cellForRowAtIndexPath для вызова webView в Async.background (так что он рисует UIwebView в обратном потоке), теперь прокрутка работая так, как должна.

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