#objective-c #uitableview #uinavigationcontroller #delay
#objective-c #uitableview #uinavigationcontroller #задержка
Вопрос:
Я использую a UINavigationController
вместе с a UITableView
, чтобы, когда пользователь касается ячейки, он выводил на экран другой контроллер просмотра.
В этом контроллере представления, который я нажимаю на экран, я загружаю некоторый HTML в UIWebView
, так что требуется некоторое время, прежде чем он завершит загрузку HTML. Я хотел бы отложить навигационный контроллер (чтобы он дождался завершения загрузки HTML), а затем вывести контроллер просмотра на экран. Как я могу достичь этого программно?
Комментарии:
1. Я думаю, вам лучше немедленно запустить новый ViewController и отобразить индикатор того, что он все еще загружается, это сделало бы ваш интерфейс более отзывчивым.
Ответ №1:
Вы также могли бы реализовать это и заставить его «ожидать» вызова правильной функции делегирования:
- (void)webViewDidFinishLoad:(UIWebView *)webView
Ответ №2:
Вы не смогли точно определить время загрузки. Поэтому лучше сразу показать второе представление с UIWebView
.
Показать второе представление с индикатором активности, запущенным в
- (void)webViewDidStartLoad:(UIWebView *)webView
метод.
И в,
- (void)webViewDidFinishLoad:(UIWebView *)webView
метод, остановите и скройте индикатор.
Ответ №3:
Было бы
[performSelector:withObject:afterDelay:][1]
работает для вас? Что-то вроде:
[navigationController performSelector:@selector(pushNewViewFromTableCell:) withObject:view afterDelay:1.0]
Но вы должны быть осторожны с задержкой ответа, которую это вызовет: пользователь коснется строки, затем, после задержки, контроллер будет нажат.
Возможно, вам было бы лучше отобразить индикатор выполнения в новом представлении, отображаемом на контроллере навигации во время загрузки данных.
Комментарии:
1. Я видел приложения, которые использовали индикатор активности внутри ячейки табличного представления при загрузке данных. Любопытно, как они связали загрузку веб-представления с ячейкой табличного представления.
2. Я предполагаю, что через методы UIWebViewDelegate, которые вызываются для подачи сигнала о начале загрузки UIWebView и о ее завершении…
3. Ах да, это правда, просто установите UIWebViewDelegate в мой контроллер табличного представления.