如何向导航栏添加自定义按钮?

时间:2012-11-16 16:15:44

标签: objective-c rubymotion

我正在创建一个Rubymotion应用程序,我需要在Navbar中创建一个自定义按钮。 我在控制器中运行代码。

我正在使用此代码:

button = UIBarButtonItem.alloc.init
    button.title = 'Add'
    button.style = UIBarButtonItemStylePlain
    button.target = self
    button.action = 'performAdd'
    button.setBackgroundImage(checkInImage, forState:UIControlStateNormal, forBarMetrics:UIBarMetricsDefault)
    button.setBackgroundImage(checkInPressed, forState:UIControlStateHighlighted, forBarMetrics:UIBarMetricsDefault)
    self.navigationItem.rightBarButtonItem = button

但是我在运行rake时遇到了这个错误:

Terminating app due to uncaught exception 'NoMethodError', reason: 'first_controller.rb:21:in `button': undefined method `setBackgroundImage' for #<UIBarButtonItem:0x6b3c1d0> (NoMethodError)

    button = UIBarButtonItem.alloc.init
        button.title = 'Add'
        button.target = self
        button.action = 'performAdd'
        button.setBackgroundImage(checkInImage, forState:UIControlStateNormal, barMetrics:UIBarMetricsDefault)
        button.setBackgroundImage(checkInPressed, forState:UIControlStateHighlighted, barMetrics:UIBarMetricsDefault)
self.navigationItem.rightBarButtonItem = button

2 个答案:

答案 0 :(得分:2)

根据我的阅读,它是barMetrics,而不是forBarMetrics。所以:

setBackgroundImage(checkInImage,
                   forState:UIControlStateNormal, barMetrics:UIBarMetricsDefault)

答案 1 :(得分:1)

我在RubyMotion中真的很新,但仍然想帮助你。如果我在任何地方不正确,请原谅我。

修改 查看崩溃日志Terminating app due to uncaught exception 'NoMethodError', reason: 'first_controller.rb:21:in按钮':未定义的方法setBackgroundImage' for #<UIBarButtonItem:0x6b3c1d0> (NoMethodError)。 我想,你没有调用正确的方法来设置View controller中的backgroundImage,这就是为什么会出现这种异常,我想是的。

我认为确切原因可能是setBackgroundImage方法。我猜这不是正确的方法。应该是backgroundImage。然后你应该尝试ViewController下面的代码行

  button.backgroundImage(checkInPressed, forState:UIControlStateHighlighted, forBarMetrics:UIBarMetricsDefault).

这是您的代码只是改变了这一行。

  button = UIBarButtonItem.alloc.init
  button.title = 'Add'
  button.style = UIBarButtonItemStylePlain
  button.target = self
  button.action = 'performAdd'
  button.backgroundImage(checkInImage, forState:UIControlStateNormal, forBarMetrics:UIBarMetricsDefault)
  button.backgroundImage(checkInPressed, forState:UIControlStateHighlighted, forBarMetrics:UIBarMetricsDefault)
  self.navigationItem.rightBarButtonItem = button

Here is The Link For The same You should take a View of this Link.

我希望你能得到一些想法..