我想在不使用它的情况下复制此控制器相同的功能,这是因为标签栏控制器根本无法自定义(固定大小,可切换状态选项卡等...)。
我想要一个自定义的“标签栏”,其中包含我想要的任何视图。而且我还需要推动视图控制器,将这个自定义标签栏固定在其位置上。
我看到很多应用程序执行此操作,我想知道是否使用不同的UIWindow对象(一个用于自定义选项卡栏,另一个用于内容)是最好的方法。
对此有何建议或指导?
提前致谢。
答案 0 :(得分:1)
绝对不是UIWindows - 在iPhone应用程序中,应该只有一个UIWindow。
我会创建一个UIViewController子类,其顶部有一个新的导航栏ui,下面有一个UIView。此视图将用于包含您要在其中推送的控制器的所有视图。该视图将clipsToBounds设置为YES,以确保您的其他控制器视图不会与导航栏等重叠。
它还有一个数组来保存当前在其中的控制器列表。
您的控制器将实现pushViewController:animated:方法等,以允许您将其他视图控制器添加到堆栈 - 您可以将新控制器添加到您的阵列,并将其视图添加为控制器视图的子视图。
然而,实现这一点真的是相当多的工作 - 导航控制器将释放低内存警告的子控制器视图,处理旋转,动画开/关视图等。你是100%确定这是你的想做什么?
答案 1 :(得分:0)
我使用了一种非常简单的方法。我是UITabbarController的子类,在init期间:
// Custom TabBar View
//
self.tabBar.hidden = YES;
MyTabBarView *myTabBarView = [[MyTabBarView alloc] initWithFrame:CGRectMake(0, 1024-44, 768, 44) // it'a an iPad app
configuration:configuration]; // an array of dictionary representing the view controllers
[self.view addSubview:myTabBarView];
[bottomBarView release];
然后我加载一些视图控制器:
aViewController.hidesBottomBarWhenPushed = YES;
我在MyTabBarView实例上执行UITabBarViewController:
setSelectedIndex:
通过这种方式,我可以轻松实现可自定义的全屏应用程序。