我一直在开发一个iPhone应用程序,它使用UIToolbar (在UINavigationController的上下文中)在屏幕底部显示一个小的状态图标。工具栏最终也会有与之相关联的操作图标(想想邮件应用程序)。
我遇到了一个问题,似乎每个推入导航控制器堆栈的UIViewController都应该有自己的一组项供工具栏显示,因此,对于每个视图转换,"status“项都会淡出和淡入。
有没有办法在工具栏中有一个持久的项目?我还尝试在导航控制器的初始化器中添加该项目(我为此方法创建了UINavigationController的子类),但仍然没有成功。
发布于 2009-07-02 03:40:04
不使用导航控制器的工具栏,而是直接向窗口添加一个工具栏,并调整导航控制器的视图框架的大小以避免出现这种情况。然后,该单个全局工具栏将始终可见。
如果您使用的是基于导航的应用程序模板,并且使用的是Interface Builder,则应执行以下步骤:
IBOutlet UIToolbar * toolbar;
添加到.m文件中。[window addSubview:[navigationController view]];
的行,并在该行后面添加:CGRect frame = navigationController.view.frame;
frame.size.height -= toolbar.frame.size.height;
用于在toolbar
方法中释放MainWindow.xib.
< code >G228
由于工具栏是窗口的一部分,而不是导航控制器的一部分,因此导航控制器不应该接触它。
发布于 2009-07-02 02:17:51
当您将新视图推送到导航控制器上时,工具栏中的视图将替换为堆栈顶部视图的工具栏中的视图。
即使你有一个静态视图(当你推送一个新的控制器时,这个视图不会改变),这个视图看起来仍然是新的,因为当你推送一个新的视图控制器到堆栈上时,苹果包含的动画。
发布于 2011-11-14 18:49:51
我发现这对我很有效:
CGFloat height = [self.toolbar frame].size.height;
CGRect rootBounds = self.window.rootViewController.view.bounds;
CGRect frame = CGRectMake(0, CGRectGetHeight(rootBounds) - height, CGRectGetWidth(rootBounds), height);
[self.toolbar setFrame:frame];
[self.navigationController.view addSubview:self.toolbar];
https://stackoverflow.com/questions/1072080
复制相似问题