我希望能夠從兩個地方調用此功能:當我完成編輯文本字段時,我想在stackView
中沒有任何文本字段時添加新的webView
,並且我還希望能夠使用barButtonItem
這樣做。具有默認參數的swift函數也是一個選擇器?
我有兩個問題。當bar按鈕調用這個函數時,參數'url'成爲一個對象,輸入UIBarButtonItem
。當它從textFieldShouldReturn
中調用時,它正確地作爲NSURL
進來。如果用戶未在地址欄中輸入任何內容,並且輸入,則會出現空白,並且不使用默認值。 (我喜歡它)
應該從textfieldShouldReturn
函數看起來應該是什麼樣的,所以空白會觸發默認值?
我該如何處理一個事實,即我的函數或按鈕將調用該函數,爲什麼我的參數'url'成爲我想要的'發件人'?
override func viewDidLoad() {
super.viewDidLoad()
setDefaultTitle()
let add = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(ViewController.addWebView))
let delete = UIBarButtonItem(barButtonSystemItem: .Trash, target: self, action: #selector(ViewController.deleteWebView))
navigationItem.rightBarButtonItems = [delete, add]
}
func addWebView(url: NSURL = NSURL(string: "https://www.google.com")!) {
let webView = UIWebView()
webView.delegate = self
stackView .addArrangedSubview(webView)
webView.loadRequest(NSURLRequest(URL: url))
webView.layer.borderColor = UIColor.blueColor().CGColor
selectWebView(webView)
let recognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.webViewTapped))
recognizer.delegate = self
webView.addGestureRecognizer(recognizer)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if let webView = activeWebView, address = addressBar.text {
if let url = NSURL(string: address) {
webView.loadRequest(NSURLRequest(URL: url))
}
} else if stackView.arrangedSubviews.count == 0 {
let address = NSURL(string: addressBar.text!)!
addWebView(address)
}
textField.resignFirstResponder()
return true
}
哦。我喜歡你所說的話,但Xcode不。它不起作用。 –
你可以更具體一些,什麼不工作? BTW這對使用private關鍵字標記實際實現方法(接受url)很重要。 –
'let add = UIBarButtonItem(barButtonSystemItem:.Add,target:self,action:#selector(ViewController.addWebView)) '停止工作。 –