UITearchBar在UITableView中

pet*_*ert 3 uitableview uisearchbar iphone-sdk-3.0 uisearchdisplaycontroller

我试图模仿类似于艺术家的iPod应用程序的表格视图的行为 - 它是一个分段的表格视图,右侧有一个部分索引,顶部有一个搜索栏,但最初在显示视图时隐藏.

我正在使用sdk 3.1.2和IB,所以只需将其UISearchDisplayController拖入我的NIB中 - 它将所有内容连接起来进行搜索.问题开始是因为我正在添加UISearchBar到第一部分UITableView,因为如果我理解正确,我必须这样做,所以我可以直接触摸部分索引中的搜索图标跳转到搜索栏?当表格视图出现时,我看到了搜索栏,但它已经调整大小,我现在在顶部的部分索引后面有一个白色块.它没有采用UISearchBar有趣的界面颜色与Interface Builder中显示的颜色不同.

我找到了一个提示,在a中添加一个小导航栏和UISearchBara UIView,然后将其添加到表格视图单元格中.这样可行,但导航栏背景的颜色通常是您所期望的(灰色),而不是上面提到的不同颜色.更有趣的是,如果我点击搜索栏开始搜索,然后点击取消,一切都是固定的.搜索栏在整个tableview单元格中的背景是一样的吗?

pet*_*ert 12

回答了我自己的问题,但可能对其他初学者有所帮助:

  • 在视图加载时将搜索栏放在表格视图标题中,向下滚动contentOffset此搜索栏的高度(通常为44像素),但很容易动态检查
  • 使用"{search}"在部分索引中添加搜索图标
  • 为搜索-1创建sectionIndexSection
  • 处理部分索引触摸时使用搜索"-1"的"特殊"索引值(将contentOffset滚动回(0,0))

更新:使用字符串常量UITableViewIndexSearch字符串代替未记录的字符串"{search}" - 即在实现时将其作为一个数组项返回:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
Run Code Online (Sandbox Code Playgroud)

UITableViewDataSource中.