3

(Swift, iOS8, Xcode6, iPhone/IPad)webViewDidFinishLoad не стрельба называется рабочей

webViewDidFinishLoad не вызываются, не стреляя, и не работает.

Да, я установил содержащий контроллер представления в качестве делегата. Я CTRL-mousedowned на UIWebView, перетащил на маленький желтый круг, представляющий контроллер вида, и отпустил. Щелчок правой кнопкой мыши по объекту UIWebView показывает, что установлен делегат.

Да, я сделал осуществить UIWebViewDelegate в моем объявлении класса, например, так:

class Paragraph: UIViewController, UIWebViewDelegate { 

Да, я перезапустить Xcode, и тест на обоих тренажере и фактическое iPhone 4S.

Запрос выглядит следующим образом:

функция
@IBOutlet var paragraph : UIWebView = nil 

var r = NSBundle.mainBundle().pathForResource("cheddar", ofType: "htm") 
var u = NSURL(fileURLWithPath: r) 
paragraph.loadRequest(NSURLRequest(URL: u)) 

Обратный вызов выглядит следующим образом:

func webViewDidFinishLoad() { 
    println("webViewDidFinishLoad") 
} 
+0

'Метод не отменяет какой-либо метод из его суперкласса – kmiklas

+2

глупый вопрос, но есть ли у вас' paragraph.delegate = self' там перед 'paragraph.loadRequest (...)' call? – Jiaaro

+0

Я положил его туда (хотя я не понимаю, почему это необходимо, если я подключил делегат UIWebView к содержащему контроллеру представления в раскадровке), но 'webViewDidFinishLoad' все еще не вызывается. – kmiklas

ответ

4

Я получил его. В обратном вызове отсутствовал параметр. Для потомков:

func webViewDidFinishLoad(webView: UIWebView!) { 

Примечание параметр webView: UIWebView!

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

Когда всплывающее окно Intellisense показало функцию с параметром, я увидел свою ошибку.

ПРИМЕЧАНИЕ. В Swift 2.2 протокол UIWebViewDelegate указывает другую опциональность: webView: UIWebView. webView: UIWebView! порождает предупреждение.

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