我创建了一个包含多个子视图的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没有工具栏..有没有办法解决这个问题..?
谢谢,
链接
答案 0 :(得分:1)
在视图控制器中设置一个操作,并让分段控件在其“值更改”事件触发时调用该操作。
控件的段编号类似于数组,从0开始。在您的操作方法中,您将测试您感兴趣的段(在本例中为段0)并显示或隐藏工具栏。如果您喜欢滑动动画,也可以在屏幕外设置动画。
如果您不担心以后再离开工具栏,可以在动作方法中使用removeFromSuperview;但是如果使用这种方法,你就不会得到动画。
使用Core Animation隐藏它的快速示例:
-(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;
}
}