繁体   English   中英

将子视图添加到不滚动的 tableview

[英]Add subview to tableview which doesn't scroll

我正在使用 UITableViewController 并想添加一个搜索栏。

我的选项是[self.tableview addSubview:searchBar]self.tableview.tableHeaderView = searchBar这两个选项都会沿着我理解的 tableview 的其余部分滚动搜索self.tableview.tableHeaderView = searchBar 但是有没有办法锁定元素,而不是使用 UIViewController 或在滚动时更改框架原点? 我正在考虑一种超越当前视图层次结构并在其上添加子视图的方法。

我尝试了相反的方法,将视图添加到超级视图并将其放在前面

[[self.tableView superview] addSubview:searchBar]; [[self.tableView superview] bringSubviewToFront:searchBar]; }

但它没有用。

UITableViewControllersUIViewControllers ,它们的主要视图属性是UITableView 因此这个UITableView确实占据了所有的屏幕。

您正在寻找的方法是使用标准UIViewController其视图是标准UIView ,并将您的UISearchBarUITableView添加为它在IB中的子视图。

要做到这一点,只需:

  • 更改您的视图控制器的类,并提及它符合与 tableview 相关的协议:将@interface UITableViewController更改为@interface UIViewController <UITableViewDelegate, UITableViewDataSource>
  • 添加一个@property(nonatomic, retain) IBOutlet UITableView* tableView属性到你的头文件,以及相关的@synthesize tableView; 执行中的声明。 不要忘记在您的dealloc将此属性设置回nil ( self.tableView = nil ) 以获得良好的内存管理
  • 将 InterfaceBuilder 中的UITableView实例链接到这个新创建的 IBOutlet。

因此你仍然有一个 UITableView 但这不会是占据你所有屏幕的主视图; 相反,您可以根据需要布置 tableView 并使其仅占用屏幕的一部分,并将 UISearchBar 放置在其上方。

另一种方法是使用UISearchDisplayController来管理您的 UISearchBar。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM