可在我的应用程序中访问菜单 - 我如何编码?

时间:2011-09-20 10:48:54

标签: objective-c menu uiviewcontroller

我的应用程序几乎是公司产品的大型演示文稿 我有一些额外的功能,我需要在整个应用程序中访问它。

此工具栏的预期功能是它将作为屏幕底部的一个小而精细的标签。当您点击选项卡时,菜单将向上扩展(即为它的frame.y属性设置动画),允许您点击菜单中包含的任何按钮。

Tab Hidden

Tab Visible

我遇到的困难是应用程序当前跨越多个视图控制器,并且因为我需要在整个过程中访问它,为了不复制代码,使得这个ViewController也是合适的,我只是加载进入我的其他视图控制器,但所有帐户都不建议Apple。

如何在不重复代码的情况下构建此菜单功能?我尝试过一些东西,但无法在我的视图中显示菜单。

下面,我将展示我目前的情况。

将位于任何视图控制器上的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    ToolboxMenu *toolboxMenu = [[ToolboxMenu alloc] init];
    [self.view addSubview:toolboxMenu.view];
}

构建工具栏的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"Creating View");
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,88,209)];
    self.view.backgroundColor = [UIColor clearColor];

    UIImageView *toolboxImage = [[UIImageView alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"popup_toolbox" ofType:@"jpg"]]];
    toolboxImage.frame = self.view.frame;
    [self.view addSubview:toolboxImage];

}

在上面的代码中,初始化菜单时会触发NSLog,但是我看不到菜单。

2 个答案:

答案 0 :(得分:2)

我建议创建一个单独的UIWindow并将其浮动到主UIWindow上,而不是尝试将其注入到每个视图中。这就是键盘的实现方式。这样做可以避免对任何现有视图进行任何更改。您需要手动处理设备旋转,但这不应该太困难。

答案 1 :(得分:0)

IIRC Apple的TabViewController的设计不同,因为它与你上面的描述有所不同。 TabViewController是主要的或主要的ViewController,兄弟姐妹是显示ViewControlers。基本上你有一个TabViewController,它将在视图之间进行选项。

我建议您重新设计视图层次结构,或者使用管理和显示下方标签菜单的类来扩展UIViewController。然后,您可以轻松地初始化一个类,在每个视图中处理它。