无法在searchBar方法中更改UITableView框架

时间:2014-05-27 17:28:52

标签: ios uitableview

我有一个视图控制器,它完全被UINavigationBar和UITableView占用。当用户点击UITableView中的搜索栏时,我想隐藏导航栏并允许表格视图完全占据屏幕。这是我的代码:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    NSLog(@"typing text");
    navBar.hidden = YES;
    [tableview setFrame:CGRectMake(0, 20, 320, 568)];
}

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
    NSLog(@"clearing text");
    navBar.hidden = NO;
    [tableview setFrame:CGRectMake(0, 64, 320, 504)];
}

但是,外观/框架更改代码无效。另一方面,我知道正在调用这些方法,因为NSLogs出现了。任何人都可以提供任何解决方案吗?

2 个答案:

答案 0 :(得分:2)

请改为尝试:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    NSLog(@"typing text");
    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [self.tableView setFrame:CGRectMake(0, 20, 320, 568)];
}

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
    NSLog(@"clearing text");
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    [self.tableView setFrame:CGRectMake(0, 64, 320, 504)];
}

添加动画标志可以解决问题。希望这有帮助!

答案 1 :(得分:0)

您应该使用搜索显示控制器(UISearchDisplayController类)来搜索功能。

搜索显示控制器管理搜索栏的显示和显示数据搜索结果的表格视图。我相信它还附带了您尝试在上面创建的功能。

本指南很有用:http://www.appcoda.com/search-bar-tutorial-ios7/