Ich habe eine webView
, wo ich Refresh/Stop für einzelne Schaltfläche anzeigen müssen, die umgekehrt ändern müssen. Wenn der Benutzer klicken Sie auf Aktualisieren der Schaltfläche muss Stopp-Symbol anzeigen, bis die webView
beenden lädt und wieder anzeigen Symbol nach dem Laden der Ansicht anzeigen.Ich brauche und Ansatz, um es zu erstellen.So erstellen Sie eine Aktualisierung und stoppen für eine einzelne UIBarbutton
-3
A
Antwort
0
Sie können so etwas wie dies zuerst versuchen Sie nun eine Funktion wie diese
func setRefreshItem() {
button.frame = CGRectMake(0, 0, 18, 25)
//Set backgroundImage in button for both state Normal and selected
button.setBackgroundImage(UIImage(named: "Refresh"), forState: UIControlState.Normal)
button.setBackgroundImage(UIImage(named: "Stop"), forState: UIControlState.Selected)
button.addTarget(self, action: #selector(self.refreshWebView(_:))",forControlEvents: UIControlEvents.TouchUpInside)
let rightItem:UIBarButtonItem = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = rightItem
}
eine globale Taste wie diese
var button: UIButton = UIButton()
erklären erstellen Jetzt refreshWebView
Methode in Ihrer viewController
func refreshWebView(sender: UIButton) {
if (sender.selected) {
self.webView.stopLoading()
}
else {
self.webView.reload()
}
sender.selected = !sender.selected
}
//Delegate method of webView
func webViewDidFinishLoad(webView : UIWebView) {
self.buttton.selected = false
}
hinzufügen
Rufen Sie auch setRefreshItem
in Ihrer viewDidLoad
1
Es gibt verschiedene Möglichkeiten, dies zu tun. Sie können eine andere Variable in Ihrem Viewcontroller namens „allowsRefresh“, erklären und dann, wenn Sie auf die Schaltfläche klicken, können Sie so etwas wie
@IBAction refreshOrStop(sender: AnyObject) {
if (allowsRefresh) {
// Do stuff that refreshes the webpage
} else {
// Do stuff that stops the refresh
}
allowsRefresh = !allowsRefresh
// Inverse itself. If it was true, change it false. If it was false, change it to true
}
Es gibt sicher bessere Namen als allowsRefresh tun, aber Sie erhalten den Punkt.
+0
danke für den Ansatz – Alex
Danke für die Detail Erklärung – Alex
Willkommen Kumpel :) –