0

我正在使用 Rubymotion 构建一个 iOS 应用程序。为了能够重用代码,我创建了一个名为 elements.rb(一个模块)的文件,其中有许多函数可以呈现不同的内容。一切正常。

这是功能之一:

def create_nav_button (hash = {})

    # Set the default values

    defaultFont = UIFont.fontWithName('Avenir-Medium', size:13)
    buttonNormal = UIImage.imageNamed('navbar/button.png')
    buttonSelected = UIImage.imageNamed('navbar/button_selected.png')

    # Create the button

    button = UIBarButtonItem.alloc.init
    button.title = hash[:title]
    button.action = hash[:action] || 'open'
    button.target = self
    button.setBackgroundImage(buttonNormal, forState:UIControlStateNormal, barMetrics:UIBarMetricsDefault)
    button.setBackgroundImage(buttonSelected, forState:UIControlStateHighlighted, barMetrics:UIBarMetricsDefault)
    button.setTitleTextAttributes({UITextAttributeFont => defaultFont}, forState:UIControlStateNormal)

    # Add button to navbar

    if (hash[:position] == 'right')

      self.navigationItem.rightBarButtonItem = button

    else

      self.navigationItem.leftBarButtonItem = button

    end

  end

这就是我在控制器文件中调用它的方式:

create_nav_button (:title => 'Info', :action => 'project_details', :position => 'right')

这是重用元素的好方法吗?如何动态更改按钮的标题?

感谢所有输入!

4

1 回答 1

2

这样可行。您需要在方法结束时返回按钮:

def create_nav_button(hash={})
  # lots of stuff
  button
end

然后像这样调用它:

@right_button = create_nav_button (:title => 'Info', :action => 'project_details', :position => 'right')

我不知道您可以更改标题的简单方法。您可以随时删除按钮并重新添加新标题。

于 2012-12-10T17:37:42.863 回答