2016-07-14 1 views
-3

У меня есть webView, где мне нужно отображать обновление/остановку для одной кнопки, которую нужно изменить наоборот. когда пользователь нажимает кнопку обновления, кнопка должна отображать значок остановки до тех пор, пока webView не закончит загрузку и не отобразит обратный значок обновления после загрузки представления. Мне нужно и подходит для его создания.Как создать обновление и остановку для одного UIBarbutton

ответ

0

Вы можете попробовать что-то вроде этого сначала объявить одну кнопку глобальный как этот

var button: UIButton = UIButton() 

Теперь создадим одну функцию, как этот

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 
} 

Теперь добавьте refreshWebView метод в 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 
} 

Также позвоните setRefreshItem в ваш viewDidLoad

+0

Спасибо за подробное объяснение – Alex

+0

Приветствую вас! –

1

Существует несколько разных способов сделать это. Вы можете объявить другую переменную в вашем ViewController под названием «allowsRefresh», а затем при нажатии на кнопку, вы можете сделать что-то вроде

@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 
} 

Есть, конечно, лучше, чем имена allowsRefresh, но вы получите точку.

+0

благодарю за подход – Alex

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