更改tableView的框架以显示和隐藏搜索栏

时间:2014-08-31 23:26:59

标签: ios hide tableview uisearchbar

我正在使用故事板。我试图在视图控制器中动态更改UItableView的框架。我在视图控制器中的tableView上方有一个搜索栏。搜索栏应该只在某些条件下可见,因此大多数时候我想隐藏它

当视图加载时,我隐藏了搜索栏,然后设置我的tableView框架,使其向上移动以填充缺失的空间。但是,它看起来不像我的表视图框架正在更新。

- (void)viewDidLoad {

    [super viewDidLoad];
//hide the search bar until the user selects search
    self.searchBar.hidden = YES;
    self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y - self.searchBar.frame.size.height, self.tableView.frame.size.width, self.tableView.frame.size.height + self.searchBar.frame.size.height);

}

我需要调用另一种方法或东西,以便我的tableView框架得到更新吗?感谢

编辑:我还尝试将搜索栏添加为故事板中表格的标题视图,然后将headerView设置为nil,最初是这样的:

- (void)viewDidLoad {

    [super viewDidLoad];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.searchBar.delegate = self;


    //hide the search bar until the user selects search
    self.tableView.tableHeaderView = nil;


}

但是当我尝试使用

再次出现时
    self.tableView.tableHeaderView = self.searchBar;

它没有出现。

1 个答案:

答案 0 :(得分:0)

使用表头视图使其正常工作。我需要使我的搜索栏很强大,以便在设置为nil时视图不会被释放。

@property (strong, nonatomic) IBOutlet UISearchBar *searchBar;

然后显示并隐藏它只是将标题设置为nil以隐藏或指定searchBar以显示它

 //hide the search bar
 self.tableView.tableHeaderView = nil;

 //show the search bar
 self.tableView.tableHeaderView = self.searchBar;