将UIToolbar添加到窗口

时间:2009-09-23 12:56:35

标签: iphone cocoa-touch uinavigationcontroller uitoolbar

我有一个基于导航的应用程序,我正在尝试添加一个独特的UIToolbar,无论当前视图是哪个都是持久的,使用它:

Persistent UIBarButtonItem in UIToolbar?

问题是当我为navigationController设置框架时,navigationController内的UITableView在导航栏下移动了20px,好像它开始在状态栏后面绘制一样。

关于如何解决此问题的任何想法?我被卡住了!

3 个答案:

答案 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
{}

真的很接近你所做的,更容易维护。希望会帮助别人。