我正在使用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')
这是重用元素的好方法吗?如何动态更改按钮的标题?
感谢所有输入!
答案 0 :(得分:2)
有效。您需要在方法结束时返回按钮:
def create_nav_button(hash={})
# lots of stuff
button
end
然后这样称呼:
@right_button = create_nav_button (:title => 'Info', :action => 'project_details', :position => 'right')
我不知道你能改变标题的简单方法。您可以随时删除该按钮并使用新标题重新添加该按钮。