重用组件的最佳方式?

时间:2012-12-09 13:44:56

标签: ios objective-c rubymotion

我正在使用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')

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

感谢所有输入!

1 个答案:

答案 0 :(得分:2)

有效。您需要在方法结束时返回按钮:

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

然后这样称呼:

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

我不知道你能改变标题的简单方法。您可以随时删除该按钮并使用新标题重新添加该按钮。