1

免责声明:我有点像 iOS n00b。我有一个基于导航的应用程序——即,在我的 AppDelegate 中,我创建了导航框架:

self.navigation_controller = [[UINavigationController alloc] initWithRootViewController:home_view_controller];
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
self.window.rootViewController = navigation_controller;
self.window.makeKeyAndVisible;

在我的主视图的框架内,我想要一个搜索栏,然后是可滚动的表格视图。所以,我写了这个:

- viewDidLoad{
  (HomeView*)home_view = [[HomeView alloc] init];
  self.view = home_view
  self.view.backgroundColor = [UIColor whiteColor]

  (UITableView*)self.table_view = [UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
  self.table_view.bounds.origin.y += 44;
  self.table_view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  self.table_view.dataSource = self;
  self.table_view.delegate = self;
  [self.view addSubview:self.table_view];

  search_frame = self.view.bounds;
  search_frame.origin.y = 48.0;
  search_frame.size.height = 48.0;

  self.search_bar = [[UISearchBar alloc] initWithFrame:search_frame)];
  [self.view addSubview:self.search_bar];
}

表格视图显示正常,但占据了导航栏下方的所有空间。我想要导航栏,然后是搜索栏,然后是表格视图。在 时viewDidLoadUITableView还没有非零边界矩形,我希望这是问题的一部分。此外,我已经在我的文件中指定UIViewAutoresizingFlexibleHeight了我autoresizingMask何时真正希望它粘在搜索栏上——我再次相信这可能是问题的一部分。

我在这里误解了什么?

谢谢

4

2 回答 2

1

史蒂夫,

尝试以下更改:

1)使用以下方法设置tableview的框架:

CGRect targetRect = CGRectMake(0, 48, self.view.frame.size.width, self.view.frame.size.heigth);
(UITableView*)self.table_view = [UITableView alloc] initWithFrame:targetRect style:UITableViewStylePlain];

2)还添加以下自动调整掩码:

// This value will anchor your table view with top margin
UIViewAutoresizingFlexibleBottomMargin

3)将搜索栏的框架设置为以下矩形框架:

CGRecttMake(0, 0, self.view.frame.size.width, 48);
于 2012-06-15T19:14:37.060 回答
0

我要做的就是将 UISearchBar 添加为第一个 UITableView 标题。

(方法tableView:viewForHeaderInSection::)

检查此博客文章:http: //jainmarket.blogspot.com/2009/08/add-searchbar-as-uitableviews-header.html

于 2012-06-15T19:01:17.677 回答