Использование UIAlertView для условной загрузки веб-запроса - PullRequest
0 голосов
/ 21 ноября 2011

В проекте iPhone, над которым я сейчас работаю, одно из требований заключается в том, что когда пользователь нажимает на ссылку на странице, поддерживаемой UIViewController, управляющей UIWebView, тогда должен отображаться UIAlertView.Веб-страница, на которую указывает ссылка, должна загружаться, только если пользователь не нажимает кнопку отмены оповещения.Еще одна деталь заключается в том, что этот конкретный контроллер является подклассом базового класса контроллера веб-представления, поэтому в некоторых случаях загрузка запроса должна быть отложена до этого суперкласса.Короче говоря:

1. User clicks on a link
2. Inspect link n webView:shouldStartLoadWithRequest:navigationType: 
3. Depending on the link, show a UIAlertView
4. If the user presses Cancel, the alert is dismissed and the request is NOT loaded
5. If the user presses Continue, the alert is dismissed and the request is loaded

Я попытался переопределить webView:shouldStartLoadWithRequest:navigationType:, а затем на основе ссылки показать предупреждение.Однако затем я понял, что любые события, происходящие при нажатии одной из кнопок оповещения, будут происходить при обратном вызове, например, alertView:clickedButtonAtIndex:.Я попытался сделать это, и приложение заблокировано.

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

Хиты будут полезны.

1 Ответ

3 голосов
/ 21 ноября 2011

Показать предупреждение и сохранить исходный запрос в каком-либо свойстве вашего контроллера представления. Затем немедленно верните NO из метода делегата (shouldStartLoadWithRequest:...).

Реализуйте alertView:clickedButtonAtIndex: и загрузите запрос, который вы сохранили ранее в свойстве, если пользователь выбирает Продолжить ... (если выбрано Отмена, вам не нужно ничего делать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...