UIbarbuttonitem外观导致崩溃

时间:2015-05-18 02:36:42

标签: ios uibarbuttonitem

CommonViewController,继承自UINavigationController。我在其中完成了以下方法。

+ (void)initialize{
    UINavigationBar *naVcBar = [UINavigationBar appearance];
    [naVcBar setBackgroundImage:[UIImage imageNamed:@"bg_nav"] forBarMetrics:UIBarMetricsDefault];

    UIBarButtonItem *buttonItem = [UIBarButtonItem appearance];
    NSMutableDictionary *textAttributes = [NSMutableDictionary dictionary];
    [textAttributes setObject:[UIColor blackColor] forKey:UITextAttributeFont];
    [buttonItem setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
}

然后,有一个名为viewController的{​​{1}},MovieListViewController的{​​{1}},其中包含以下代码。

rootViewController

结果是程序崩溃了。 它崩溃在:CommonViewController

所以我尝试修复它,并在我删除代码时发现

- (void)viewDidLoad {
    [super viewDidLoad];
    UIBarButtonItem *right=[[UIBarButtonItem alloc] initWithTitle:@"切换模式" style:(UIBarButtonItemStylePlain) target:self action:@selector(exchangeView)];
    self.navigationItem.rightBarButtonItem=right;
}
一切都好。 但我不知道原因,为什么?谢谢!

错误:

  

***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UICachedDeviceWhiteColor pointSize]:无法识别的选择器发送到实例0x7fb048c3b3d0'

1 个答案:

答案 0 :(得分:2)

你的问题在于这一行:

[textAttributes setObject:[UIColor blackColor] forKey:UITextAttributeFont];

您传入的颜色却指定了“font”属性。改变其中一个。传入字体而不是颜色,或将键更改为用于颜色的键。

此外,不推荐使用UITextAttributeFont。请改用NSFontAttributeName