解开push segue后,SearchBar重新出现

时间:2013-12-29 16:20:34

标签: ios objective-c uitableview uisearchbar

我正在使用此代码:

- (void)viewDidLoad {
    NSLog(@"searchbar hide");
    self.tableView.contentOffset = CGPointMake(0, 44);
}

隐藏SearchBar中的TableView。它运作得很好。

问题在于: TableView的行具有推送到第二个场景的segue。当应用程序从push segue返回时,SearchBar会出现粗略动画。我希望它像Notes.app一样重新隐藏。

我尝试过但没有工作:

  • 在第二个场景的viewDidUnload中调用相同的方法
  • 在主场景的viewWillAppear中调用相同的方法
  • 制作一个由自定义后退按钮调用的展开segue(但这会带来另一个问题,我想保持典型的<箭头......)

有没有简单的方法来实现这一目标?

修改 我在主场景的SecondViewController.hidesBottomBarWhenPushed = YES;方法中调试了导致这种情况的原因- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender。如果我对此行发表评论SearchBar没有出现,那么现在的问题是我的辅助场景中有一个不需要的BottomBar

当(几乎)总是发生时,问题就会转移......

1 个答案:

答案 0 :(得分:0)

在viewWillAppear中设置tableview的contentOffset,与viewDidLoad相比,每次视图重新出现时都会调用该视图,在视图控制器的生命周期内只会调用一次。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    CGRect newBounds = self.tableView.bounds;
    newBounds.origin.y = newBounds.origin.y + searchBar.bounds.size.height;
    self.tableView.bounds = newBounds;
}

此处searchBar应替换为您的搜索栏