在iOS中移动标签栏控制器

时间:2015-08-21 19:09:15

标签: ios

作为前言,我刚开始进行iOS编程,但在Objective-C中确实有相当全面的背景知识。所以请解释一下你在说什么,但不要觉得你必须像两岁那样说话。

我正在构建一个使用选项卡式视图控制器的应用程序。我想将它移到应用程序的顶部,如Facebook或Ask.fm,以及他们的应用程序。

我知道还有其他文章,但它们有点旧,我不太了解它们。所以,如果你能提供一些样本代码,你的答案会很棒。

我想要做的就是移动吧,我不想创建一个新的标签栏控制器或其他东西。

2 个答案:

答案 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,以及他们的应用程序。

你混淆了UITabBarUITabBarController,这些是完全不同的类。前者是视图,而后者是视图控制器,即根本不是视图。此外,也许是因为这种混乱,您正在假设其他应用程序是如何实现的。由于您提到的应用将标签放在顶部,因此他们使用UITabBarController的可能性很小。

  

我想要做的就是移动吧,我不想创建一个新的标签栏控制器或其他东西。

UITabBarController管理您提供的其他视图控制器阵列,显示与当前所选视图控制器关联的视图,并且还管理标签栏。它如何布置它管理的视图(标签栏,选定视图)是不可自定义的 - 如果您想要的行为与UITabBarController的行为不同,则需要使用不同的类。