将ToolBar添加到我的应用程序

时间:2011-12-27 14:36:37

标签: iphone objective-c ios

我在UIViewController上有一个按钮。当我单击此按钮时,会显示UIToolBar(在TabBarController上方)。现在,当我向下滚动视图并单击按钮时,UIToolBar将显示在不同的位置(在tababar上方)。我想要的是在所有实例的TabBar上方显示UIToolBar(即使我向上或向下滚动页面并单击按钮)。

到目前为止我的代码:

toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 300 , 320 , 55)];

根据此准则,我已将工具栏的XY个坐标设为0323。因此,即使我向上或向下滚动视图并单击按钮,工具栏也会显示在此位置。

那么如何修改我的代码,在所有实例的TabBar上方显示它。 (即使我向上或向下滚动视图)

3 个答案:

答案 0 :(得分:1)

这一切都取决于您将toolBar添加为子视图的位置。如果您希望它始终位于同一位置,请将其添加到当前UIWindow对象。

UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 300 , 320 , 55)];
单击按钮上的

将toolBar作为子视图添加到主窗口

[mainWindow addSubview:toolBar];

答案 1 :(得分:0)

问题是:您正在视图上添加工具栏,其坐标硬编码为(0,300,320,55)。这是关于观点的。但不是iPhone屏幕或窗口。滚动视图后添加后,您可以看到视图内容也向上滚动。

您所要做的就是:

UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 300 , 320 , 55)];
[mainWindow addSubview:toolBar];
[mainwindow bringSubviewToFront:toolBar];

答案 2 :(得分:-1)

听起来你需要实现以下层次结构:

UITabBarController
   V
UINavigationController
   V
Your view controller

UINavigationController有一个toolbar属性,可以使用setToolbarHidden:animated:方法显示或隐藏。

根据您的问题,工具栏会直接显示在标签栏上方。

如果添加工具栏作为滚动视图的子视图,则需要处理滚动视图委托方法scrollViewDidScroll:并在每次触发时重新定位滚动视图。

该方法 - 并向主窗口添加滚动视图 - 两者都有覆盖部分滚动视图的缺点。使用导航控制器的工具栏,视图控制器视图的高度会自动减小工具栏的高度,因此不会重叠。

有关完整说明,请参阅Apple documentation