0

Rubymotion を使用して iOS アプリを作成しています。コードを再利用できるようにするために、elements.rb (モジュール) というファイルを作成しました。ここには、さまざまなものをレンダリングする多くの関数があります。すべてが完全に正常に動作します。

これは関数の 1 つです。

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 に答える