作为前言,我刚开始进行iOS编程,但在Objective-C中确实有相当全面的背景知识。所以请解释一下你在说什么,但不要觉得你必须像两岁那样说话。
我正在构建一个使用选项卡式视图控制器的应用程序。我想将它移到应用程序的顶部,如Facebook或Ask.fm,以及他们的应用程序。
我知道还有其他文章,但它们有点旧,我不太了解它们。所以,如果你能提供一些样本代码,你的答案会很棒。
我想要做的就是移动吧,我不想创建一个新的标签栏控制器或其他东西。
答案 0 :(得分:0)
在iOS开发中,UITabBar
不适用于顶层。 iOS在不同的部分划分每个区域,例如UINavigationBar
用于顶部而不是页脚,而UITabBar
只能根据Apple的建议在页脚中使用。
您可以在UIView
的帮助下使用自定义视图,也可以根据需要使用UIButtons
。假设你想创建带有两个按钮的顶栏,这样你就可以通过这样做来实现这个目的:
首先,您必须隐藏UINavigationBar
,如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
[[self navigationController] setNavigationBarHidden:YES animated:NO];
_topBar=[self createTopBar];
[self.View addSubview:_topBar];
}
之后,您可以创建自己的自定义视图:
- (UIView *)createTopBar {
UIView * topBar=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
UIButton * btnOne=[UIButton buttonWithType:UIButtonTypeCustom];
btnOne.frame=CGRectMake(0, 5, 34, 34);
[btnOne setBackgroundColor:[UIColor clearColor]];
[btnOne addTarget:self action:@selector(YourMethodOne) forControlEvents:UIControlEventTouchUpInside];
UIButton * btnTwo=[UIButton buttonWithType:UIButtonTypeCustom];
btnTwo.frame=CGRectMake(270, 5, 34, 34);
[btnTwo setBackgroundColor:[UIColor clearColor]];
[btnTwo addTarget:self action:@selector(YourMethodTwo) forControlEvents:UIControlEventTouchUpInside];
[topBar addSubview:btnOne];
[topBar addSubview:btnTwo];
}
-(void) YourMethodOne {
NSLog(@"First button Pressed");
//Do whatever you want when btnOne is pressed
}
-(void) YourMethodTwo {
NSLog(@"Second button Pressed");
//Do whatever you want when btnTwo is pressed
}
在这个例子中,我创建了一个本地方法和一个局部变量。我更喜欢创建一个合适的类,并将这些按钮作为公共实例。
答案 1 :(得分:0)
我正在构建一个使用选项卡式视图控制器的应用程序。我想将它移到应用程序的顶部,如Facebook或Ask.fm,以及他们的应用程序。
你混淆了UITabBar
和UITabBarController
,这些是完全不同的类。前者是视图,而后者是视图控制器,即根本不是视图。此外,也许是因为这种混乱,您正在假设其他应用程序是如何实现的。由于您提到的应用将标签放在顶部,因此他们使用UITabBarController
的可能性很小。
我想要做的就是移动吧,我不想创建一个新的标签栏控制器或其他东西。
UITabBarController
管理您提供的其他视图控制器阵列,显示与当前所选视图控制器关联的视图,并且还管理标签栏。它如何布置它管理的视图(标签栏,选定视图)是不可自定义的 - 如果您想要的行为与UITabBarController
的行为不同,则需要使用不同的类。