如何更改选项卡栏项的状态图像



我正在构建一个Rubymotion应用程序,我正在自定义标签栏。我已经设法将自定义图像作为选项卡栏的背景,但现在我需要以为每个选项卡设置单个图像。一个用于按下时,一个用于未按下时。

我正在遵循 NSScreencasts.com 的指南(针对 objective-c),并且显示说明说我应该使用此代码。但是当我在 Ruby 中尝试它时(我认为这是正确的),我得到一个错误。

在Objective-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 中设置此代码真的正确吗?

Objective-C 中的这些行是一种方法:

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

签名为:

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

因此,对于 RubyMotion,方法签名是:

setFinishedSelectedImage(image, withFinishedUnselectedImage:image)

为您转换为此内容:

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

最新更新