0

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

我正在使用这段代码:

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
4

2 回答 2

2

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

setBackgroundImage(checkInImage,
                   forState:UIControlStateNormal, barMetrics:UIBarMetricsDefault)
于 2012-11-16T18:02:25.513 回答
1

我是 RubyMotion 的新手,但仍在努力帮助你。如果我在任何地方不正确,请原谅我。

编辑: 查看您的崩溃日志Terminating app due to uncaught exception 'NoMethodError', reason: 'first_controller.rb:21:in按钮': undefined method setBackgroundImage' for #<UIBarButtonItem:0x6b3c1d0> (NoMethodError)。我认为,你没有调用正确的方法来设置你的背景图像,View controller这就是为什么会出现这样的异常,我猜是这样。

而且我认为确切原因可能是方法。我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

这是相同的链接您应该查看此链接。

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

于 2012-11-16T16:22:05.313 回答