如何在分段点击时隐藏 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的主要内容,如果未能解决你的问题,请参考以下文章