Iphone Can';除非在表视图中,否则无法显示UISearchBar

Iphone Can';除非在表视图中,否则无法显示UISearchBar,iphone,cocoa-touch,uitableview,Iphone,Cocoa Touch,Uitableview,我的目标是将UISearchBar固定在UITableView正上方的视图中。当我在IB中设置它,然后构建时,表视图将扩展以填充整个窗口,搜索栏不可见。如果我将UISearchBar设置为UITableView的子视图,搜索栏将按预期显示,但这不是我想要的。我想说的是,在用户选择一行之后,我想显示一个细节视图,搜索栏仍然保留在屏幕上。所以我认为它应该是一个单独的子视图,而不是表的一部分。但由于某些原因,当搜索栏只是表外的一个子视图时,我无法显示它。您必须通过编程来完成此操作。这就是我最后做的。

我的目标是将UISearchBar固定在UITableView正上方的视图中。当我在IB中设置它,然后构建时,表视图将扩展以填充整个窗口,搜索栏不可见。如果我将UISearchBar设置为UITableView的子视图,搜索栏将按预期显示,但这不是我想要的。我想说的是,在用户选择一行之后,我想显示一个细节视图,搜索栏仍然保留在屏幕上。所以我认为它应该是一个单独的子视图,而不是表的一部分。但由于某些原因,当搜索栏只是表外的一个子视图时,我无法显示它。

您必须通过编程来完成此操作。这就是我最后做的。 首先将以下内容添加到ViewController的.h文件中

@interface YourViewController : UITableViewController <UISearchBarDelegate> 
 {
    UISearchBar *mySearchBar;
 }
    @property (nonatomic, retain) UISearchBar *mySearchBar;
    @end
    self.mySearchBar = [[[UISearchBar alloc] 
            initWithFrame:CGRectMake(0.0, 64.0, self.view.bounds.size.width,
            44.0)] autorelease];
    self.mySearchBar.delegate = self;
    self.mySearchBar.showsCancelButton = YES;
    self.mySearchBar.hidden = YES;
    self.mySearchBar.tintColor = [UIColor lightGrayColor];
    [self.navigationController.view addSubview: self.mySearchBar];
您可能还需要添加类似的内容,以防止搜索栏位于tableView的顶部

    self.tableView.frame = CGRectMake(0.0, 44.0, 320, 324);
在我的例子中,当我深入到细节视图时,搜索栏仍保留在视图中。我不得不打电话:

    self.mySearchBar.hidden = YES;`

在我的DidSelectRowatineXpath中,当我单击单元格时将其删除。

它不适用于UITableViewController。以下是您想要的行为:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

    return search; //in .h, IBOutlet UISearchBar* search;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {

    return 44;
}

谢谢你,乔纳。这让我找到了我要去的地方!嗨,波伊特。需要更多的信息来说明这是如何与上面的代码相适应的,或者它是否与上面的代码完全不兼容。我现在正试着这么做。谢谢您是在另一个控制器中还是在TVC中执行此操作?嗯,Piotr这只是将搜索栏放入标题中,如果您计划在标题中使用任何内容,这是不好的。是的,您可以构建包含搜索和任何其他元素的UIView,而不是直接使用搜索视图。