【问题标题】:UIBarButtonItem tintColor with UINavigationControllerUIBarButtonItem tintColor 与 UINavigationController
【发布时间】:2011-08-15 19:50:56
【问题描述】:

我的导航栏中有一个带有 2 个 UIBarButtonItems 的导航控制器。我只想更改右侧的色调颜色。我在静态中找到了一种方法来做到这一点:

[[self.navigationController.navigationBar.subviews objectAtIndex:2] setTintColor:[UIColor redColor]];

问题是当我将控制器推入导航控制器以显示另一个视图时,当我返回到我的右导航栏按钮应该具有自定义颜色的根视图时,按钮的颜色又回到它的默认值。当我再次点击它时,应用程序崩溃了。它说它不能改变色调颜色,就像我的导航栏中这个元素的索引改变了一样。

我尝试了互联网上的其他技术,但是当我使用导航控制器并返回根控制器时它们都失败了......

有什么想法吗? 谢谢!

编辑 1:

我想在 UINavigationBar 中有一个带边框的样式按钮,背景颜色为红色或绿色。

关于我发现的其他方式,它几乎是导航栏中视图的 foreach 循环,如果视图的类是按钮项,则更改 tintColor。它不会崩溃,但它适用于我的导航栏的所有 UIBarButtonItem (我只想要一个特定的按钮,正确的按钮,而不是全部)。例如this tutorial 工作一半,我的应用程序在返回根视图控制器时崩溃。

【问题讨论】:

  • 大多数时候我们无法提出一个好的解决方案,所以我不能说我们解决了我的问题。这可能是我的利率低的原因,也是因为未回答的问题。否则,如果某人解决了甚至部分帮助我解决了我的问题,我会感谢他...
  • @Erik B 那你让我更容易了,你对我的问题一点帮助都没有。所以我不会给你任何功劳。但是我会记住你对我的旧帖子和下一个帖子所说的话,学习一些东西总比什么都没有好,对吧?祝你好运。

标签: iphone uinavigationcontroller uibarbuttonitem tintcolor


【解决方案1】:

深入到 navigationcontroller.navigation 栏的子视图不会与 Apple 一起使用,...
更改 UIBarButtonItem 颜色的正确方法是将 customView 与 buttonitem 一起使用。这是一个解释...的链接...

UIBarButtonItem with color?

【讨论】:

  • 我已经尝试过解决方案,我可以有一个按钮,但不像我想要的那样有边框。而且我想避免创建一个图像将其作为背景。如果这是在我的导航栏中使用自定义颜色按钮获得边框样式的唯一解决方案,我想我不会有太多选择......
  • 在按钮中使用图像,或者你也可以用 Quartz 弄脏你的手。如果你想要一些代码,请告诉我。
【解决方案2】:

您只需创建一个只有一个段的分段控件。根据需要设置其色调颜色。您可能还想将其模式设置为瞬时模式,使其在光学上表现得像一个按钮。使用 initWithCustomView: 初始化程序将分段控件添加到栏按钮项。这就是您通常创建自定义着色按钮的方式。

例子:

UISegmentedControl *cartControl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(10,7,60,30)];
[cartControl setTintColor:[UIColor colorWithRed:0.35 green:0.47 blue:0.65 alpha:1]];
[cartControl addTarget:self action:@selector(cart:) forControlEvents:UIControlEventValueChanged];
[cartControl setSegmentedControlStyle:UISegmentedControlStyleBar]; 
[cartControl insertSegmentWithImage:[UIImage imageNamed:@"shopping_cart_white_small.png"] atIndex:0 animated:NO]; 
[cartControl setMomentary:YES];  

UIBarButtonItem *cartButton = [[UIBarButtonItem alloc] initWithCustomView:cartControl];
[cartControl release];
[[self navigationItem] setRightBarButtonItem:cartButton];
[cartButton release];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2012-08-31
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多