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

问题描述:

我有一个应用程序,几乎是一个公司产品的大型演示文稿。
我有一些额外的功能,我需要通过我的应用程序访问。菜单在整个我的应用程序中可用 - 我如何编码?

此工具栏的预期功能是它将坐在屏幕底部的一个小而细微的选项卡上。当您点击标签时,菜单将向上展开(即为其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火灾,但我看到没有菜单。

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

+0

我该如何解决这个问题?对不起,我不确定如何实现另一个UIWindow。 –

+0

'self.toolWindow = [[UIWindow alloc] initWithFrame:....]; self.toolWindow.windowLevel = 1.0;'请记住'UIWindow'是'UIView'的一个子类。 –

+1

这个答案可能与此有关。 http://*.com/questions/2833724/adding-view-on-statusbar-in-iphone – Sukima

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

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

+0

感谢您的回答。它的问题是,完整的应用程序已被设计和构建已经没有使用标签,我只是想在每个屏幕的右下角添加一个小视图来处理导航到'工具箱'功能。该选项卡不是iPhone SDK选项卡,它就像一个浏览器选项卡,但在屏幕的底部,占用不超过20像素。点击它会提高它并使菜单可访问。 –

+0

我在原始问题中添加了几个图像,我希望能够说明这一点。您的解决方案仍然适用? –

+0

然后,您将使用第二个选项并自己制作视图。 @Rob Napir在下面更好地解释了这个想法。 – Sukima