2016-05-10 6 views
2

Я пытаюсь использовать пользовательское изображение для моей кнопки «Назад» в панели навигации. Я использую приведенный ниже код, который добавляет изображение, но также сохраняет текст «Назад» в кнопке. Я хочу также удалить текст. Я могу это сделать?Быстрая пользовательская кнопка назад в навигационной панели

self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "icon-back") 
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "icon-back") 
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil) 

ответ

5

код Try ниже :-)

func SetBackBarButtonCustom() 
{ 
    //Back buttion 
    let btnLeftMenu: UIButton = UIButton() 
    btnLeftMenu.setImage(UIImage(named: "back_arrow"), for: UIControlState()) 
    btnLeftMenu.addTarget(self, action: #selector(UIViewController.onClcikBack), for: UIControlEvents.touchUpInside) 
    btnLeftMenu.frame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2) 
    let barButton = UIBarButtonItem(customView: btnLeftMenu) 
    self.navigationItem.leftBarButtonItem = barButton 
} 

func onClcikBack() 
{ 
    _ = self.navigationController?.popViewController(animated: true) 
} 
+0

Не могли бы вы преобразовать этот код в Swift 3 –

+1

@AlekseyTimoshchenko, пожалуйста, проверьте, что у меня есть обновление Ans for swift 3. –

+0

Спасибо, что это работа, но как установить текст рядом с изображением? Я попробовал '.setTitle (« Отмена », для: .normal)', но это не сработало ... Я попытался увеличить рамку кнопки, но также и без успеха ... Что я делаю неправильно? –

1

Если вы хотите добавить кнопку Назад в каждом UIViewController, то вы можете добавить код расширения UIViewController еще можно использовать addBackButton() непосредственно следующим образом.

extension UIViewController { 

    func addBackButton() { 
     let btnLeftMenu: UIButton = UIButton() 
     let image = UIImage(named: "backButtonImage"); 
     btnLeftMenu.setImage(image, for: .normal) 
     btnLeftMenu.setTitle("Back".localized, for: .normal); 
     btnLeftMenu.sizeToFit() 
     btnLeftMenu.addTarget(self, action: #selector (backButtonClick(sender:)), for: .touchUpInside) 
     let barButton = UIBarButtonItem(customView: btnLeftMenu) 
     self.navigationItem.leftBarButtonItem = barButton 
    } 

    func backButtonClick(sender : UIButton) { 
     self.navigationController?.popViewController(animated: true); 
    } 
} 

Убедитесь, что вы должны добавить следующий файл «backButtonImage.png» в вашем приложении пачке.

Вызов этого метода self.addBackButton() в методе viewDidLoad вашего пользовательского класса UIViewController как этот

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.addBackButton() 
} 

Примечание: если вы не добавляете addBackButton метода в расширении, то вам нужно будет добавить этот метод непосредственно в классе и соответственно установите целевой и селектор.