选中时会突出显示导航栏中的UIBarButtonItem,但工具栏中的UIBarButtonItem不会

时间:2015-02-12 23:21:42

标签: ios uitableview swift interface-builder uibarbuttonitem

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

enter image description here

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

选项按钮未按下

enter image description here

选项按钮按下

enter image description here

开始按钮未按下

enter image description here

开始按钮按下

enter image description here

我无法弄清楚如何解决此问题。我确实验证了"开始"按钮实际上有效,因此突出显示问题不是因为按钮不起作用。另外,有趣的是,"开始"长按按钮 会突出显示。

5 个答案:

答案 0 :(得分:3)

您只是在Interface Builder的Attributes Inspector中错误配置了UIbarButtonItem / UIButton。

没有必要浪费时间来调查这样一个微不足道的问题,无论它看起来多么令人费解。只需删除“开始”按钮,然后再将新的按钮拖放到工具栏中。 它没有理由与上面的选项按钮表现不同。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

启用:显示Touch On Highlight以进行测试。

答案 3 :(得分:0)

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

  • 将按钮绑定到切换按钮的目标方法 意味着切换,然后更改按钮的图像属性 因此。您可以将2个图像用于所选状态之一 默认情况下。

  • 创建自己的UIBarButtonItem子类,看起来像 这样:

        @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
    

答案 4 :(得分:0)

工具栏是否设置为半透明?我怀疑你的导航栏是和工具栏没有。