2016-05-03 6 views
0

Я пытаюсь использовать кнопку большого плюса в качестве кнопки правого бара, код ниже работал, пока он находился в раскадровке, но после перемещения всего в файлы xib и отдельных .swift-файлов это это единственное, что сломалось.Добавление пользовательского UIBarButtonItem в UINavigationBar

let button = UIButton(type: .Custom) 
button.setTitle("+", forState: .Normal) 
button.titleLabel?.font = UIFont.systemFontOfSize(20.0) 
button.frame = CGRectMake(0, 0, 100, 40) 
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button) 
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "+", style: .Plain, target: self, action: #selector(GroupNavViewController.onCreate)) 
self.navigationItem.rightBarButtonItem?.setTitleTextAttributes([NSFontAttributeName:UIFont.systemFontOfSize(40)], forState: .Normal) 

UINavigationController - это собственный .swift-файл без xib-файла.

Я не могу понять, почему он работал в раскадровке, но теперь это не так.

В идеале я хотел бы иметь большую кнопку плюс (как нормальный размер шрифта кажется немного слишком мал)

+0

, что вы положили в XIb файлы? Панель навигации? – MudOnTire

+0

контроллер навигации содержит еще один контроллер вида, но для него не имеет xib-файла. https://github.com/gomeow/BillSplitter/blob/master/BillSplitter/GroupNavViewController.swift#L20-L26 –

ответ

1

действительно подходит для меня. я просто избавился от целевого действия, поэтому мне не нужно его реализовывать. все сделано в коде. нет раскадровки и нет xibs.

AppDelegate.swift

var window: UIWindow? 
let viewController = ViewController(); 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    let navigationController = UINavigationController(rootViewController:viewController) 

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    self.window!.backgroundColor = UIColor.whiteColor() 
    self.window!.rootViewController = navigationController 
    self.window!.makeKeyAndVisible() 

    return true 
} 

ViewController.swift

override func viewDidLoad() { 
    super.viewDidLoad() 

    let button = UIButton(type: .Custom) 
    button.setTitle("+", forState: .Normal) 
    button.titleLabel?.font = UIFont.systemFontOfSize(20.0) 
    button.frame = CGRectMake(0, 0, 100, 40) 

    self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button) 
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "+", style: .Plain, target: self, action: nil) 
    self.navigationItem.rightBarButtonItem?.setTitleTextAttributes([NSFontAttributeName:UIFont.systemFontOfSize(40)], forState: .Normal) 

} 
+0

Это сработало, спасибо. Я пытался добавить кнопку в контроллер навигации, а не в контроллер представления, который он содержал. –

+0

рад это слышать. отметьте его как ответ plz – ha100

1

UINavigationController является его собственным .swift файл без файла XIb.

Сделайте эту кнопку в классе UIViewController, а не в вашем UINavigationController. Поэтому переместите один и тот же код в свой UIViewController.

+0

Это не сработало, название не отображается так или иначе –