我的应用程序中有UISearchBar。我将其设置为表头视图。当文本开始编辑时,我想将搜索栏设置为viewController的子视图。搜索栏正确添加到viewController的视图,但它的帧不正确。这是我的代码:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
UITableView *tableView = ((UITableView *)[((SectionViewController *)sharedInstance.currentViewController).view viewWithTag:1111]);
[tableView reloadData];
if([searchBar.text isEqualToString:@"Filter..."])
{
searchBar.text = @"";
for(UIView *subView in searchBar.subviews){
if([subView isKindOfClass:UITextField.class]){
[(UITextField*)subView setTextColor:[UIColor blackColor]];
}
}
}
[((SectionViewController *)sharedInstance.currentViewController).view addSubview:searchBar];
[searchBar setFrame:CGRectMake(0, 20, 320, 38)];
[((SectionViewController *)sharedInstance.currentViewController).navigationController setNavigationBarHidden:YES animated:YES];
[searchBar setShowsCancelButton:YES animated:YES];
}
我想设置帧(0,20,320,38),但我得到(0,0,320,38)。此外,searchBar的初始帧是(0,0,320,38)。请告诉我为什么我会这样做?
答案 0 :(得分:2)
UISearchBar很奇怪。你不能自由设置它的框架。这是由于内部实施。
答案 1 :(得分:0)
我将这样的UISearchBar添加到我的ViewController,它是从UITableViewController派生的:
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,self.tableView.frame.size.width,44)];
searchBar.placeholder = @"Search for Groups";
searchBar.delegate = self;
self.searchController = [[UISearchDisplayController alloc]
initWithSearchBar:searchBar
contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.tableView.tableHeaderView = self.searchController.searchBar;
答案 2 :(得分:0)
视图不能同时出现在两个地方。您不能将相同的搜索栏作为子视图添加到视图控制器的视图中,同时它是表视图的标题。为什么不建立不同的搜索栏?