将自定义UIBarButtonItem添加到UINavigationBar

时间:2016-05-03 01:08:50

标签: ios swift button uinavigationcontroller uibarbuttonitem

我正在尝试使用一个大的加号按钮作为右键按钮,下面的代码在故事板中工作,但在将所有内容移动到xib文件和单独的.swift文件后,这是唯一破坏的东西。

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文件。

我无法弄清楚它在故事板中的工作原理,但现在却没有。

理想情况下,我想要一个大的加号按钮(正常的字体大小似乎有点太小)

2 个答案:

答案 0 :(得分:1)

  

UINavigationController是它自己的.swift文件,没有xib文件。

在UIViewController类中创建此Button,而不是在UINavigationController中。所以将相同的代码移动到你的UIViewController。

答案 1 :(得分:1)

对我有用。我刚刚摆脱目标行动,所以我不必实施它。都在代码中完成。没有故事板和没有xib。

<强> 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)

}