我有一个基于导航的应用程序,我正在尝试添加一个独特的UIToolbar,无论当前视图是哪个都是持久的,使用它:
Persistent UIBarButtonItem in UIToolbar?
问题是当我为navigationController设置框架时,navigationController内的UITableView在导航栏下移动了20px,好像它开始在状态栏后面绘制一样。
关于如何解决此问题的任何想法?我被卡住了!
答案 0 :(得分:2)
我最终使用了navigationController的内置工具栏。
所以在每个viewDidLoad上我将当前toolbarItems设置为相同的数组:
- (void)viewDidLoad {
[super viewDidLoad];
MyDelegate *appDelegate = (MyDelegate *)[[UIApplication sharedApplication] delegate];
[self setToolbarItems:[appDelegate toolbarItems] animated:YES];
}
我没有看到任何过渡,如果我需要在特定的viewController上,我总是可以将它设置为不同的按钮。
也许这就是它应该完成的方式。奥卡姆剃刀,有人吗? :)
答案 1 :(得分:0)
在向UIWindow添加子视图时,我发生了很多这种情况。我尝试了各种各样的建议,但最终只是将帧原点向下移动了20px以适应状态栏。
答案 2 :(得分:0)
我已经创建了一个来自UIToolbar的自定义对象,并添加了一个名为staticItems的属性,我在init方法中填充了3个UIBarButtonItem(及其逻辑)
我已将“显示工具栏”设置为我的UINavigationController对象,并将工具栏的类更改为我的新类。
然后我将导航的父对象设置为导航的委托,并实现了这些方法
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[viewController setToolbarItems:downloadToolbar.staticItems animated:NO];
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{}
真的很接近你所做的,更容易维护。希望会帮助别人。