2016-11-08 4 views
0

Я пытаюсь быть умными о настройке всех title свойства «Назад» кнопки в UINavigationController, так что я не должен делать self.navigationController.navigationBar.backButtonItem.title = "Back" везде или подкласса UINavigationController и установить его везде, поэтому я создал это расширение:Установите все обратно название кнопок в UINavigationController

extension UINavigationItem { 
    open var backBarButtonItem: UIBarButtonItem? { 
     get { 
      return self.backBarButtonItem 
     } 

     set { 
      newValue?.title = "Back" 
      backBarButtonItem = newValue? 
     } 
    } 
} 

Но это говорит 'backBarButtonItem' used within its own type.

Кто-нибудь сделал это раньше или может подумать о способе заставить его работать?

ответ

1

Вы получаете эту ошибку, потому что не можете создать переменную с именем, которое похоже на те переменные, которые определены в SDK.

Вы не можете переопределить существующие функциональные возможности

как в вашем случае, если вы с указанием его как backBarButtonTitle который определяется как open var backBarButtonItem: UIBarButtonItem? в UINavigationBar классе UIKit

Как отмечается в doc яблочного

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

+0

Это потому, что я хочу попробовать переопределить backBarButtonItem, который уже существует, и изменить заголовок перед его настройкой - это невозможно в расширении? Только в подклассе? –

+0

@ChrisByatt Вы не можете переопределить существующие функции с расширением, обновил мой ответ. – Rajat

-2

Следуйте за этим снимком экрана Затем запустите проект. Я думаю, что вы можете легко решить свою проблему :) enter image description here