我正在使用UITableViewController并希望添加搜索栏。
我的选项为[self.tableview addSubview:searchBar]
或self.tableview.tableHeaderView = searchBar
这两个选项都会沿着tableview的其余部分滚动搜索栏,我理解。但有没有办法锁定元素,而不是使用UIViewController或更改滚动框架原点?
我正在考虑一种方法来超越当前的视图层次结构并在其上添加子视图。
我尝试了相反的方法,将视图添加到superview并将其带到前面
[[self.tableView superview] addSubview:searchBar];
[[self.tableView superview] bringSubviewToFront:searchBar];
}
但它不起作用。
答案 0 :(得分:4)
UITableViewControllers
UIViewControllers
的主视图属性为UITableView
。因此,UITableView
确实占据了所有屏幕。
您正在寻找的方法是使用标准UITableViewController
,其标准为UIView
,并将UISearchBar
和UITableView
作为子视图添加到其中IB。
要做到这一点,只需:
@interface UITableViewController
更改为@interface UIViewController <UITableViewDelegate, UITableViewDataSource>
@property(nonatomic, retain) IBOutlet UITableView* tableView
属性,并在实现中添加关联的@synthesize tableView;
语句。不要忘记在nil
中将此属性设置回self.tableView = nil
(dealloc
)以获得良好的记忆管理UITableView
实例链接到此新创建的IBOutlet。因此你仍然有一个UITableView,但这不是占用你所有屏幕的主视图;相反,你可以像你想要的那样布局你的tableView,并使它只占用你的屏幕的一部分,并将UISearchBar放在它上面。
另一种方法是使用UISearchDisplayController
来管理您的UISearchBar。