1

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

UIToolbar中的持久UIBarButtonItem?

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

关于如何解决这个问题的任何想法?我被困住了!

4

3 回答 3

2

我最终使用了navigationController 的内置工具栏。

因此,在每个 viewDidLoad 上,我将当前的 toolbarItems 设置为相同的数组:

- (void)viewDidLoad {
    [super viewDidLoad];

    MyDelegate *appDelegate = (MyDelegate *)[[UIApplication sharedApplication] delegate];
    [self setToolbarItems:[appDelegate toolbarItems] animated:YES];
}

我看不到任何转换,如果需要在特殊的 viewController 上,我总是可以将其设置为不同的按钮。

也许这就是它应该做的方式。奥卡姆剃刀,有人吗?:)

于 2009-09-25T13:34:06.857 回答
0

在向 UIWindow 添加子视图时,我经常发生这种情况。我尝试了人们的各种建议,但最终只是将框架原点向下移动了 20px 以适应状态栏。

于 2009-09-23T14:27:50.130 回答
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
{}

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

于 2010-08-01T14:54:18.467 回答