2012-11-16 2 views
0

Rubyotion 앱을 만들고 있는데 tabBar를 사용자 정의하고 있습니다. 사용자 지정 이미지를 tabBar의 배경으로 넣을 수 있었지만 지금은 각 탭에 개별 이미지를 설정하려면 이 필요합니다. 하나는 누를 때를위한 것이고 그렇지 않은 것을위한 것입니다.tabbar 항목의 상태 이미지를 변경하는 방법은 무엇입니까?

NSScreencasts.com의 지침 (objective-c)을 따르고 있으며 쇼 코드에이 코드를 사용해야한다고 나와 있습니다. 하지만 루비에서 시도하면 (내가 옳다고 생각하는) 오류가 발생합니다. 오브젝티브 C에서

:

- (id)initWithCoder:(NSCoder *)aDecoder { 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Friends" 
                 image:nil 
                  tag:0]; 
     [self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tabbar-activity-selected.png"] 
         withFinishedUnselectedImage:[UIImage imageNamed:@"tabbar-activity.png"]]; 
    } 
    return self; 
} 

내 루비 코드 :

class FirstController < UIViewController 
    def viewDidLoad 
    super 

    view.backgroundColor = UIColor.whiteColor 

    self.tabBarItem = UITabBarItem.alloc.initWithTitle('Friends', image: nil, tag: 0) 
    self.tabBarItem.setFinishedSelectedImage(UIImage.imageNamed('tabitem_selected.png')) 
    self.tabBarItem.withFinishedUnselectedImage(UIImage.imageNamed('tabitem.png')) 
    end 
end 

오류 : 또한

first_controller.rb:8:in `viewDidLoad': undefined method `setFinishedSelectedImage' for #<UITabBarItem:0x6b71670> (NoMethodError) 
    from app_delegate.rb:7:in `application:didFinishLaunchingWithOptions:' 
2012-11-16 14:45:56.924 custom_tabbar[45679:f803] *** Terminating app due to uncaught exception 'NoMethodError', reason: 'first_controller.rb:8:in `viewDidLoad': undefined method `setFinishedSelectedImage' for #<UITabBarItem:0x6b71670> (NoMethodError) 

. viewDidLoad에서이 코드를 설정하는 것이 맞습니까?

[self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tabbar-activity-selected.png"] 
       withFinishedUnselectedImage:[UIImage imageNamed:@"tabbar-activity.png"]]; 

서명은 다음과 같습니다 :

답변

2

목표 - C에서이 라인이 하나의 방법입니다 RubyMotion에 대한 그래서

- (void)setFinishedSelectedImage:(UIImage *)selectedImage 
    withFinishedUnselectedImage:(UIImage *)unselectedImage 

, 메소드 서명은 다음과 같습니다

setFinishedSelectedImage(image, withFinishedUnselectedImage:image) 

는 변환 어떤 이 당신에게 :

self.tabBarItem.setFinishedSelectedImage(UIImage.imageNamed('tabitem_selected.png'), 
             withFinishedUnselectedImage: UIImage.imageNamed('tabitem.png')) 
+0

감사합니다. 정말 멋졌습니다! –

+0

app_delegate에서이를 설정해야합니까? 아니면 컨트롤러에? 어느 것이 올바른 방법입니까? 내가 컨트롤러를 사용해야한다면, 어떤 방법으로? –