2012-12-09 4 views
0

Rubymotion을 사용하여 iOS 앱을 제작하고 있습니다. 코드를 재사용 할 수 있으려면 elements.rb (모듈)라는 파일을 만들었습니다. 다른 파일을 렌더링하는 많은 함수가 있습니다. 모든 것이 완벽하게 작동합니다.구성 요소를 재사용하는 가장 좋은 방법은 무엇입니까?

이 기능 중 하나입니다

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

이 요소를 재사용하는 좋은 방법입니다

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 

이 내가 컨트롤러 파일에서 호출하는 방법입니다? 버튼의 제목을 어떻게 동적으로 변경할 수 있습니까?

모든 입력에 감사드립니다!

답변

2

그래도 작동합니다. 당신은 당신의 방법의 끝에있는 버튼을 반환 할 수 있습니다 :

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

다음과 같이 호출 :

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

난 당신이 제목을 변경할 수있는 쉬운 방법을 알고하지 않습니다. 언제든지 버튼을 제거하고 새 제목으로 다시 추가 할 수 있습니다.