Ios 选中时,导航栏中的UIBarButtonItem将亮显,但工具栏中的UIBarButtonItem不亮显

Ios 选中时,导航栏中的UIBarButtonItem将亮显,但工具栏中的UIBarButtonItem不亮显,ios,uitableview,swift,interface-builder,uibarbuttonitem,Ios,Uitableview,Swift,Interface Builder,Uibarbuttonitem,我有一个简单的UITableViewController,其中NavigationController作为根视图控制器。我在导航栏中添加了选项UIBarButtonim,在工具栏中添加了开始UIBarButtonim,如下所示: 。我遇到的问题是,当按下“选项”按钮时,会像普通的UIButton按钮一样高亮显示,但工具栏上的“开始”按钮不会。这非常不方便,因为这使得用户很难知道他们是否真的按下了按钮。此行为如下所示: 未按下选项按钮: 按下选项按钮: 未按下启动按钮: 按下启动按钮: 我不知道如

我有一个简单的UITableViewController,其中NavigationController作为根视图控制器。我在导航栏中添加了选项UIBarButtonim,在工具栏中添加了开始UIBarButtonim,如下所示:

。我遇到的问题是,当按下“选项”按钮时,会像普通的UIButton按钮一样高亮显示,但工具栏上的“开始”按钮不会。这非常不方便,因为这使得用户很难知道他们是否真的按下了按钮。此行为如下所示:

未按下选项按钮:

按下选项按钮:

未按下启动按钮:

按下启动按钮:


我不知道如何纠正这种行为。我确实验证了“开始”按钮是否有效,因此突出显示问题并不是因为按钮不起作用。另外,有趣的是,当长时间按下“开始”按钮时,它确实会高亮显示。

确保您的按钮在IB中以.Default状态初始化

然后确保.Highlighted状态文本颜色与.Default状态文本颜色不同


启用:为测试高亮显示触摸。

确保您的按钮以IB中的默认状态初始化

然后确保.Highlighted状态文本颜色与.Default状态文本颜色不同


启用:为测试显示触摸高光。

没有内置方法,但我可以想出一些自定义方法:

将按钮绑定到一个目标方法,该方法可以切换按钮的任何内容 用于切换,然后更改按钮的图像属性 照着您可以使用两个图像,一个用于所选状态 默认情况下

创建你自己的uibarbuttonite子类 这:


没有内置的方法,但我可以想到一些定制方法:

将按钮绑定到一个目标方法,该方法可以切换按钮的任何内容 用于切换,然后更改按钮的图像属性 照着您可以使用两个图像,一个用于所选状态 默认情况下

创建你自己的uibarbuttonite子类 这:


您只是在Interface Builder的属性检查器中错误配置了UIbarButtonItem/UIButton

浪费时间调查这样一个琐碎的问题是没有意义的,不管它看起来多么令人费解。只需删除“开始”按钮,然后将新按钮再次放入工具栏。
没有理由让它的行为与上面的选项按钮不同。

您只是在Interface Builder的属性检查器中错误配置了UIBarButtonim/UIButton

浪费时间调查这样一个琐碎的问题是没有意义的,不管它看起来多么令人费解。只需删除“开始”按钮,然后将新按钮再次放入工具栏。
没有理由使其行为与上面的选项按钮不同。

工具栏是否设置为半透明?我怀疑导航栏是透明的,工具栏不是。

工具栏是否设置为半透明?我怀疑您的导航栏是,工具栏不是。

您应该将按钮类型从UIButtonTypeCustom更改为UIButtonTypeSystem。

您应该将按钮类型从UIButtonTypeCustom更改为UIButtonTypeSystem。

看看这个问题,虽然这是一个有价值的资源,但它并没有真正解决问题的根本原因。我想知道为什么uibarbuttonite会在导航栏中自动高亮显示,而不是在工具栏中。您好,我已经尝试创建您所面临的问题。我在导航栏中添加了工具栏和按钮,当点击按钮时,机器人会高亮显示。您能告诉我您是如何添加按钮的以及您设置的“开始”按钮的属性吗?您能添加一些代码片段吗?我已经试过了,按钮突出显示。你能发送一个样品吗?我刚刚尝试了一个测试项目,比如你的配置NavigationController->TableVC和顶部和底部的条。。。所有的按钮都有你想要的相同的选择效果,因此如果没有更多的信息就不可能重现你的bug…看看这个问题,虽然这是一个有价值的资源,但它并没有真正解决问题的根本原因。我想知道为什么uibarbuttonite会在导航栏中自动高亮显示,而不是在工具栏中。您好,我已经尝试创建您所面临的问题。我在导航栏中添加了工具栏和按钮,当点击按钮时,机器人会高亮显示。您能告诉我您是如何添加按钮的以及您设置的“开始”按钮的属性吗?您能添加一些代码片段吗?我已经试过了,按钮突出显示。你能发送一个样品吗?我刚刚尝试了一个测试项目,比如你的配置NavigationController->TableVC和顶部和底部的条。。。所有的按钮都有你想要的相同的选择效果,所以不是po
可能在没有更多信息的情况下复制您的bug…只是一个附录-我感觉选项栏按钮项的类型是“完成”而不是“自定义”,这可能是为什么“开始”按钮不会出现这种情况的原因。这很好,但对于barbuttonitems来说,良好的动画行为是默认的,用于工具栏按钮项,也用于uibuttons。只有当你开始修补它们时,你最终会松开淡入淡出动画。只是一个附录-我感觉选项栏按钮项的类型是“完成”而不是“自定义”,这可能就是为什么“开始”按钮不会出现这种情况的原因。那很好,但是,对于barbuttonitems、工具栏按钮项和uibuttons来说,良好的动画行为是默认的。只有当您开始修补它们时,最终才会松开淡入淡出动画。
    @interface CustomBarButtonItem : UIBarButtonItem {
        BOOL _state;
        UIImage * selectedImage;
        UIImage * defaultImage;
    }
    - (BOOL)toggleState;
    @property (nonatomic, retain) UIImage * selectedImage;
    @property (nonatomic, retain) UIImage * defaultImage;
    @end

@implementation CustomBarButtonItem
- (BOOL)toggleState {
    if (_state) {
        // Switch to Off state
        self.image = defaultImage;
    }
    else {
        // Switch to On state
        self.image = selectedImage;
    }
    return _state = !_state;
}
@end