如何在分段点击时隐藏 UItoolbar

Posted

技术标签:

【中文标题】如何在分段点击时隐藏 UItoolbar【英文标题】:How to hide UItoolbar on segmented click 【发布时间】:2013-01-22 13:13:13 【问题描述】:

我创建了一个带有多个子视图的 UIViewController。要切换到所有子视图,我添加了一个分段控件。屏幕看起来像这样。

在第二个视图中,我添加了一个 UIToolbar,使用这行代码..

    toolbar = [UIToolbar new];
    toolbar.barStyle = UIBarStyleDefault;
    [toolbar sizeToFit];
    toolbar.frame = CGRectMake(0, 0, 800, 40);

    UIBarButtonItem *filterByClass = [[UIBarButtonItem alloc] initWithTitle:@"A" style:UIBarButtonItemStyleBordered target:self action:@selector(goToFilteredByClass:)];

    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

    NSArray *buttonItems = [NSArray arrayWithObjects:filterByClass, spacer, nil];
    [toolbar setItems:buttonItems animated:NO];

所以屏幕会是这个样子..

当我回到 A 段时,这是我的屏幕..

然后数据被工具栏覆盖..我想删除它,因为段 A 没有工具栏..有没有办法解决这个问题..?

谢谢,

链接

【问题讨论】:

【参考方案1】:

在您的视图控制器中设置一个动作,并让您的分段控件在其“值更改”事件触发时调用该动作。

控件的段像数组一样编号,从 0 开始。在您的操作方法中,您测试您感兴趣的段(在本例中为段 0)并显示或隐藏工具栏。如果您喜欢滑动动画,您也可以在屏幕外对其进行动画处理。

如果您不担心留下工具栏以供以后重用,您可以在您的操作方法中使用 removeFromSuperview;但是如果你使用这种方法,你不会得到动画。

使用核心动画隐藏它的快速示例:

-(IBAction)segmentedControlValueChanged:(UISegmentedControl *)sender


   switch (sender.selectedSegmentIndex) 
      case 0:
         // A was pressed, so hide the toolbar
         [UIView animateWithDuration:0.2
                 animations: ^(void)  toolbar.alpha = 0.0; ];
         break;
      case 1:
         // B was pressed so show the toolbar
         [UIView animateWithDuration 0.2
                 animations: ^(void)  toolbar.alpha = 1.0; ];
         break;
   

【讨论】:

以上是关于如何在分段点击时隐藏 UItoolbar的主要内容,如果未能解决你的问题,请参考以下文章

如何在XML序列化时隐藏可为null的的字段

如何以编程方式在按钮点击时隐藏 UIPickerview?

点击按钮时如何使collectionView标头隐藏?

点击设备时如何隐藏状态栏和导航栏

android中如何点击一个按钮时隐藏软键盘,(不是点击空白处隐藏软键盘)

如何在点击时隐藏可折叠的 Bootstrap 导航栏