将UISegmentedControl添加到UISearchBar而不是Scope Buttons

时间:2011-06-05 15:15:02

标签: ios uitableview uisearchbar uisegmentedcontrol

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

相反,我在我的tableViewHeader中添加了一个UISegmentedControl。这种方法效果很好,但只有当我键入UISearchbar时才会显示。不太方便。

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

我希望在文本输入搜索栏时可以对分段控件进行点击。

您知道有何方法可以执行以下操作?

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

1 个答案:

答案 0 :(得分:0)

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

  return nil;
}

@end

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

没有使用“私有API”,所以苹果应该没问题, 但请注意,如果他们改变了视图布局(不太可能),这可能会破坏, 这应该是你的色彩消失的副作用 通过标准搜索栏API

访问其余的州