Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UISearchBar-添加子视图问题?_Objective C_Ios8_Uisearchbar - Fatal编程技术网

Objective c UISearchBar-添加子视图问题?

Objective c UISearchBar-添加子视图问题?,objective-c,ios8,uisearchbar,Objective C,Ios8,Uisearchbar,我正在尝试将UISearchBar(固定位置!)添加到UITableView的顶部 CGRect rect = self.headerView.frame; CGRect newRect = CGRectMake(0, rect.origin.y + rect.size.height, rect.size.width, CZP_S

我正在尝试将
UISearchBar
(固定位置!)添加到
UITableView
的顶部

CGRect rect = self.headerView.frame;
CGRect newRect = CGRectMake(0,
                            rect.origin.y + rect.size.height,
                            rect.size.width,
                            CZP_SEARCHBAR_HEIGHT);

UIView *view = [[UIView alloc] initWithFrame:newRect];
view.backgroundColor = [UIColor whiteColor];
结果(我想要我的酒吧的位置上有一个白色的矩形):

但如果我想将子视图添加到视图中,搜索栏将显示在tableview的第一个单元格上(我的视图下方!)


这里有一种方法。看起来您正试图用代码而不是故事板来完成,所以这是一个代码示例。它看起来也像是在一个popover中做的,我把一个快速的项目放在一起作为一个例子,使用popover,它看起来和你的不完全一样,但它足够接近你想要去的地方,我想

首先,这里是代码示例,它来自包含标题、搜索栏和tableview的视图控制器

- (void)viewDidLoad
{
    [super viewDidLoad];

    // get the desired size for this popover and setup our header height
    CGSize viewSize      = self.preferredContentSize; // could also be self.view.bounds.size depending on where you're using it
    CGFloat headerHeight = 44.0;

    // setup our desired frames
    CGRect headerFrame          = CGRectMake(0, 0, viewSize.width, headerHeight);
    CGRect searchContainerFrame = CGRectMake(0, headerHeight, viewSize.width, headerHeight);

    // for this frame I'm simply centering it, there's better ways to do it but this is an example
    CGRect searchBarFrame       = CGRectMake(5, 5, searchContainerFrame.size.width - 10, searchContainerFrame.size.height - 10);

    // set our tableview frame to be positioned below our header and search container frame
    CGRect tableviewFrame       = CGRectMake(0, headerHeight *2, viewSize.width, viewSize.height - (headerHeight * 2));

    // create our header view and set it's background color
    UIView *headerView = [[UIView alloc] initWithFrame:headerFrame];
    headerView.backgroundColor = [UIColor orangeColor];

    // create our container view to hold the search bar (not needed really, but if you want it contained in a view here's how)
    UIView *searchContainer = [[UIView alloc] initWithFrame:searchContainerFrame];
    searchContainer.backgroundColor = [UIColor greenColor];

    // instantiate our search bar
    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:searchBarFrame];

    // add the search bar to the container view
    [searchContainer addSubview:searchBar];

    // create our tableview and position it below our header and search containers
    UITableView *tableview = [[UITableView alloc] initWithFrame:tableviewFrame];
    tableview.backgroundColor = [UIColor blueColor];

    [self.view addSubview:headerView];
    [self.view addSubview:searchContainer];
    [self.view addSubview:tableview];
}
这段代码给了我一个带有橙色标题、绿色/灰色搜索栏和下方表格视图的popover

编辑:如果您有兴趣查看我用来整理这些内容的项目文件,可以从github下载

- (void)viewDidLoad
{
    [super viewDidLoad];

    // get the desired size for this popover and setup our header height
    CGSize viewSize      = self.preferredContentSize; // could also be self.view.bounds.size depending on where you're using it
    CGFloat headerHeight = 44.0;

    // setup our desired frames
    CGRect headerFrame          = CGRectMake(0, 0, viewSize.width, headerHeight);
    CGRect searchContainerFrame = CGRectMake(0, headerHeight, viewSize.width, headerHeight);

    // for this frame I'm simply centering it, there's better ways to do it but this is an example
    CGRect searchBarFrame       = CGRectMake(5, 5, searchContainerFrame.size.width - 10, searchContainerFrame.size.height - 10);

    // set our tableview frame to be positioned below our header and search container frame
    CGRect tableviewFrame       = CGRectMake(0, headerHeight *2, viewSize.width, viewSize.height - (headerHeight * 2));

    // create our header view and set it's background color
    UIView *headerView = [[UIView alloc] initWithFrame:headerFrame];
    headerView.backgroundColor = [UIColor orangeColor];

    // create our container view to hold the search bar (not needed really, but if you want it contained in a view here's how)
    UIView *searchContainer = [[UIView alloc] initWithFrame:searchContainerFrame];
    searchContainer.backgroundColor = [UIColor greenColor];

    // instantiate our search bar
    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:searchBarFrame];

    // add the search bar to the container view
    [searchContainer addSubview:searchBar];

    // create our tableview and position it below our header and search containers
    UITableView *tableview = [[UITableView alloc] initWithFrame:tableviewFrame];
    tableview.backgroundColor = [UIColor blueColor];

    [self.view addSubview:headerView];
    [self.view addSubview:searchContainer];
    [self.view addSubview:tableview];
}