【问题标题】:Menu Accessible Throughout My App - How do I code this?在我的应用程序中可访问的菜单 - 我如何编码?
【发布时间】:2011-09-20 20:49:01
【问题描述】:

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

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

我遇到的困难是该应用程序当前跨越多个视图控制器,并且由于我需要始终访问它,为了不重复代码,制作这个 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,但我看不到菜单。

【问题讨论】:

    标签: objective-c menu uiviewcontroller


    【解决方案1】:

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

    【讨论】:

    • 我该怎么做?抱歉,我不确定如何实现另一个 UIWindow。
    • self.toolWindow = [[UIWindow alloc] initWithFrame:....]; self.toolWindow.windowLevel = 1.0; 请记住,UIWindowUIView 的子类。
    • 这个答案可能与此有关。 stackoverflow.com/questions/2833724/…
    【解决方案2】:

    IIRC Apple 的 TabViewController 设计不同,因为它倒退到您上面描述的方式。 TabViewController 是主视图控制器或主视图控制器,其兄弟是显示视图控制器。基本上你有一个 TabViewController 将在视图之间切换。

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

    【讨论】:

    • 感谢您的回答。它的问题是整个应用程序已经在没有使用标签的情况下设计和构建,我只想在每个屏幕的右下角添加一个小视图来处理“工具箱”功能的导航。该选项卡不是 iPhone SDK 选项卡,它类似于浏览器选项卡,但位于屏幕底部,占用不超过 20 像素。点击它会抬起它并使菜单可访问。
    • 我在原始问题中添加了几张图片,希望能说明这一点。您的解决方案仍然适用吗?
    • 然后您将使用第二个选项并自己制作视图。 @Rob Napir 在下面更好地解释了这个想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多