将UISegmentedControl添加到UISearchBar而不是范围按钮

3
我想在我的UISearchBar下方添加范围按钮。但是我无法更改内置范围按钮的色调。
相反,我在tableViewHeader中添加了一个UISegmentedControl。这足够好用,但是只有当我没有输入到UISearchbar时它才显示出来。不太方便。
当我输入文本到UISearchBar中时,表格和分段控件被“没有显示结果”的半透明黑色层隐藏了。一旦结果开始显示,我的分段控件就完全消失了,只有带有结果的单元格显示。
我希望在输入搜索栏中的文本期间使分段控件可以点击。
你知道如何做到以下哪种方式吗?
1.在输入文本时使UISegmentedControl与UISearchBar一起移动,或
2.在UITableView中显示搜索结果同时显示UISegmentedControl
谢谢。
1个回答

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访问其余状态。


嗨@bshirley,谢谢你的回复,但我已经尝试过了。这似乎将范围按钮更改为普通的UISegmentedControl,但高度不正确。我还尝试单独访问每个UISegment,但即使它响应setTintColor方法,颜色也不会改变。有什么想法吗? - pchap10k
iOS 5 中有许多组件都支持额外的着色功能,如果这能让你感到安慰的话。 - bshirley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接