在iPhone地图应用程序中,地图视图底部有一个工具栏(它包含搜索/路线段控件等)。通过单击标注从地图视图移动时,工具栏将使用地图视图滑出,留下没有工具栏的下一个视图(表格控制器)。
我试图在第二个视图控制器中对[self.navigationController setToolbarHidden:YES animated:YES]
做同样的事情,但是这会给一个奇怪的工具栏向下滑动动画,而地图视图向左滑动。
在[self.navigationController setToolbarHidden:YES]
中使用viewDidLoad
也会产生不良影响(它会在推动动画开始时使工具栏消失,留下一个丑陋的空白区域。)
我假设答案是使用nib文件,但我更喜欢以编程方式(如果可能的话)。
当我推动新的视图控制器时,如何让工具栏“粘贴”到地图视图并随之滑出?感谢。
Gourmet Haus Staudt http://img.skitch.com/20100518-xfubyriig48d3ckaemjg2ay8q.jpg
答案 0 :(得分:3)
事实证明,答案是直接创建工具栏并自己将其添加到视图中。这是UIViewController
的代码UINavigationController
。帧坐标可以根据屏幕上的内容进行更改。
- (void)viewDidLoad
{
// Add a toolbar to the view
CGRect toolbarFrame = CGRectMake(0, 372, 320, 44);
UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:toolbarFrame];
UIBarButtonItem *compassButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"compass.png"]
style:UIBarButtonItemStyleBordered
target:self
action:@selector(zoomToCurrentLocation)];
compassButton.width = 30.0f; // make the button a square shape
[myToolbar setItems:[NSArray arrayWithObject:compassButton] animated:NO];
[compassButton release];
[self.view addSubview:myToolbar];
[super viewDidLoad];
}
答案 1 :(得分:1)
我在这一天有一天。真的没有得到编程的答案,但视图行为正确的最佳方法是在界面构建器中执行界面。如果在代码中为工具栏设置项目,例如: [self.navigationController setToolbarItems:control1,control2,...,nil] animated:NO];
凭借我的经验,我可以说你在整个应用程序中说当你推新视图时有一个工具栏,除非你隐藏它(或者你正在使用tabBar),但隐藏它你会得到那些不想要的效果
你可以试试这个:
[self.navigationController setToolbarHidden:YES animated:YES];
第一个控制器中的- (void)viewWillDisappear :( BOOL)动画方法, 并在第一个控制器中的 - (void)viewWillAppear:(BOOL)动画方法中将hidden设置为NO。
希望这有帮助。
PS:如果你得到编程答案,请告诉我! = P
答案 2 :(得分:0)
覆盖第二个视图控制器的-viewWillAppear:
方法以隐藏工具栏。