4

我有一个基于标签栏的应用程序,并且UInavigationcontroller适用于每个标签。在 aTabViewController中,我实现了 aUIsegmentedcontrolsearchDisplayControlleruitableview。navigationItems、tabledata 根据segmentedcontrol 选择进行更改。对于一个片段,我隐藏了搜索栏。但是当搜索栏被隐藏时,tableview 第一行没有响应didselectrowatindexpath

这是我的代码,

在段更改操作中

- (void)indexDidChangeForSegmentedControl:(UISegmentedControl *)aSegmentedControl {
[self changeNavigationItems];

l.text = [NSString stringWithFormat:@"%d",self.segmentControl.selectedSegmentIndex];
if([segmentIndexesToHideSearchBar containsObject: [NSString stringWithFormat:@"%d", self.segmentControl.selectedSegmentIndex]])
{
    self.searchDisplayController.searchBar.hidden = YES;
    self.dataTable.frame = CGRectMake(0, 0, self.dataTable.frame.size.width, self.dataTable.frame.size.height);
}
else
{
    self.searchDisplayController.searchBar.hidden = NO;
    self.dataTable.frame = CGRectMake(0, 44, self.dataTable.frame.size.width, self.dataTable.frame.size.height);
}
[self.dataTable reloadData];

}

其他代码是通用的,其他东西工作正常。

第二个问题是当我通过单击一行从详细信息视图中返回时,不会保留表格框架的更改。搜索栏所在的空间。

等待帮助。

4

2 回答 2

6

我想这不是正确的方法,但它对我有用:) 使其隐藏:

CGRect searchFrame = self.searchDisplayController.searchBar.frame;
searchFrame.size.height = 0;

self.searchDisplayController.searchBar.frame = searchFrame;
self.searchDisplayController.searchBar.hidden = YES;

再次“揭示”它:

searchFrame.size.height = 44;
self.searchDisplayController.searchBar.frame = searchFrame;
self.searchDisplayController.searchBar.hidden = NO;

我不确定这是否适用于自动布局,从未尝试过。(这也适用于 Xcode < 5,iOS<7)

于 2013-09-26T11:41:35.067 回答
1

我已经想通了。我的第一个问题是第一次点击 tableview 行没有响应。那是因为我弄错didSelectRowAtIndexPathdidDeselectRowAtIndexPath。多么愚蠢的错误,我遭受了几个小时......:(

第二个问题是因为我在viewDidLoad函数中编写隐藏和换帧代码,我将代码移动到viewDidAppear函数中。现在代码工作正常。

于 2013-09-30T06:18:15.967 回答