2011-09-11 37 views
0

我正在使用UITableViewController并希望添加一个搜索栏。将子视图添加到不滚动的tableview

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

我尝试了相反的做法,以期增加了上海华并把那个前

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

,但没有奏效。

回答

4

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

你正在寻找使用标准UITableViewController,其观点是标准UIView的方法,并添加您UISearchBarUITableView作为一个子视图将其在IB。

要做到这一点,只需:

  • 改变类视图控制器,而是何况,它符合的tableview相关协议:改变@interface UITableViewController@interface UIViewController <UITableViewDelegate, UITableViewDataSource>
  • 一个@property(nonatomic, retain) IBOutlet UITableView* tableView属性添加到你的头文件以及相关的@synthesize tableView;声明。不要忘记将此属性重置为nilself.tableView = nildealloc以获得良好的内存管理
  • 将InterfaceBuilder中的UITableView实例链接到此新创建的IBOutlet。

因此,你仍然有一个UITableView,但这不会是占用所有屏幕的主视图;相反,你可以像你想要的那样布局你的tableView,并使它只占用屏幕的一部分,并将UISearchBar放在它的上面。

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

+0

好吧,使用tableview将旧的UITableViewController转换为UIViewController是一件很麻烦的事情吗?有没有可以指导我的样本?或者它只是UIViewController与添加tableview代表? –

+0

我编辑了我的答案给你所有的细节。从一种形式转换为另一种形式非常简单。 – AliSoftware

+0

非常感谢。 –

相关问题