【问题标题】:Adding a UISegmentedControl to UISearchBar instead of Scope Buttons将 UISegmentedControl 添加到 UISearchBar 而不是 Scope Buttons
【发布时间】:2011-09-08 18:47:25
【问题描述】:

我想在我的 UISearchBar 下方添加范围按钮。但是我无法更改内置范围按钮的色调颜色。

相反,我在 tableViewHeader 中添加了一个 UISegmentedControl。这工作得很好,但它只在我 输入 UISearchbar 时显示。不太方便。

当我在 UISearchBar 中输入文本时,表格和分段控件被“未显示结果”半透明黑色层隐藏。一旦结果开始显示,我的分段控件就会完全消失,只有有结果的单元格才会显示。

我想让分段控件在文本输入到搜索栏中时可点击。

你知道有什么方法可以做到以下几点吗?

  1. 在输入文本时使 UISegmentedControl 与 UISearchBar 一起移动,或者
  2. 在 UITableView 上显示搜索结果时显示 UISegmentedControl

谢谢

【问题讨论】:

    标签: ios uitableview uisearchbar uisegmentedcontrol


    【解决方案1】:

    试试

    @implementation UISearchBar (subviewAccess)
    - (UISegmentedControl *)scopeBar {
      for (UIView *v in [self subviews]) {
        if ([v isKindOfClass:[UISegmentedControl class]])
          return v;
      }
    
      return nil;
    }
    

    @结束

    获取您想要的分段控件,并从那里对其进行着色 (它目前在索引 0 处,但这绝对不是肯定的)

    没有使用“私有 API”,所以苹果应该可以接受, 但请注意,如果他们更改了视图布局(不太可能),这可能会中断, 这会导致你的色调消失的副作用,你应该 通过标准搜索栏 API 访问其状态的其余部分

    【讨论】:

    • 嗨@bshirley,谢谢,不过我已经试过了。这似乎将范围按钮更改为普通的 UISegmentedControl 但高度不正常。我也尝试单独访问每个 UISegment,但即使它响应 setTintColor 方法,颜色也不会改变。有什么想法吗?
    • iOS 5 中的许多组件提供了额外的着色支持,如果有什么安慰的话
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2018-07-26
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多