【问题标题】:How to add UITabBar in iphone using objective c如何使用objective c在iphone中添加UITabBar
【发布时间】:2011-02-21 05:39:25
【问题描述】:

如何以编程方式为 iphone 应用程序添加添加 UITabBar。需要一些建议和示例代码。

【问题讨论】:

  • 我做了,但我没有得到开始的解决方案。
  • 请马克斯。我买了Objective C的书,一直在研究它,但我仍然对这些东西感到困惑。他在问如何创建 UITabBar,而不是 UITabBarController……令人惊讶的是,Apple 文档并没有告诉你如何。

标签: iphone objective-c uitabbar


【解决方案1】:

这里有两个方面....

第一个方面(UITabBarController): 在这里,您可以向 UITabBarController 添加多个类(即 Viewcontrollers),如前面的答案所示......

第二个方面(UITabbar): 在这里您可以在任何视图控制器中添加 Tabbar...对于此 Tabbar 您可以添加多个 UITabBar Items..并且您可以获得单独的 Tabbar Item Action.....

UITabBar

请参见下面的代码

---------> 添加UITabBar

UITabBar *myTabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
myTabBar.delegate=self;   //here you need import the protocol <UITabBarDelegate>
[self.view addSubview:myTabBar];

---------> 向UITabBar添加项目

NSMutableArray *tabBarItems = [[NSMutableArray alloc] init];

UITabBarItem *tabBarItem1 = [[UITabBarItem alloc] initWithTitle:@"Item1" image:[UIImage imageNamed:@"Item1image.png"] tag:0];
UITabBarItem *tabBarItem2 = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemContacts tag:1 ];
UITabBarItem *tabBarItem3 = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemHistory tag:2 ];

[tabBarItems addObject:tabBarItem1];
[tabBarItems addObject:tabBarItem2];
[tabBarItems addObject:tabBarItem3];

myTabBar.items = tabBarItems;
myTabBar.selectedItem = [tabBarItems objectAtIndex:0];

---------> 在委托方法中获取项目操作

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    NSInteger selectedTag = tabBar.selectedItem.tag;
    NSLog(@"%ld",(long)selectedTag);
    if (selectedTag == 0) {
        //Do what ever you want here
    } else if(selectedTag == 1) {
        //Do what ever you want
    } else { //if(selectedTag == 2)
        //Do what ever you want here
    }
}



更新:(Swift 2.0)

1.第一方面(UITabBarController):
这将允许我们将UIViewControllers 配置为tabbarUITabBarController 中的项目。
以下是 UITabBarController 的基本方法:

--------->将UITabBarController添加到appdelegate中的窗口

let tabBarController = UITabBarController(nibName: nil, bundle: nil)
tabBarController.delegate = self // Need to import 'UITabBarControllerDelegate'
self.window!.rootViewController = tabBarController;
self.window?.makeKeyAndVisible();

---------> 配置 UIViewControllers

let firstViewController = UIViewController()
firstViewController.title = "FirstVC"
firstViewController.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Bookmarks, tag: 0)
let firstNavController: UINavigationController = UINavigationController(rootViewController: firstViewController)

let secondViewController = UIViewController()
secondViewController.title = "SecondVC"
secondViewController.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Contacts, tag: 1)
let secondNavController: UINavigationController = UINavigationController(rootViewController: secondViewController)

let thirdViewController = UIViewController()
thirdViewController.title = "ThirdVC"
thirdViewController.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Downloads, tag: 2)
let thirdNavController: UINavigationController = UINavigationController(rootViewController: thirdViewController)

let forthViewController = UIViewController()
forthViewController.title = "ForthVC"
forthViewController.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Favorites, tag: 3)
let forthNavController: UINavigationController = UINavigationController(rootViewController: forthViewController)

---------> 将 UIViewControllers 附加到 UITabBarController

tabBarController.viewControllers = [firstNavController, secondNavController, thirdNavController, forthNavController]

--------->在'UITabBarControllerDelegate'中接收事件

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
    print("didSelectViewController: \(viewController.title) ?")
}


2. 第二个方面(UITabBar):
这将允许我们创建tabbar 项目。我们可以在委托方法中获取单个项目的事件
以下是 UITabBar 的基本方法:

---------> 将 UITabBar 添加到视图

let frame = CGRectMake(0, CGRectGetHeight(self.view.frame) - 49, CGRectGetWidth(self.view.frame), 49)
let tabBar: UITabBar = UITabBar(frame: frame)
tabBar.delegate = self // Need to import 'UITabBarDelegate'
self.view.addSubview(tabBar)

--------->准备TabbarItems

let tabBarItem1 = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Bookmarks, tag: 0)
let tabBarItem2 = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Contacts, tag: 1)
let tabBarItem3 = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Downloads, tag: 2)
let tabBarItem4 = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Favorites, tag: 3)

--------->将UITabBarItems添加到UITabBar

tabBar.items = [tabBarItem1, tabBarItem2, tabBarItem3, tabBarItem4]
tabBar.selectedItem = tabBarItem1

--------->在'UITabBarDelegate'中接收事件

func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
    let selectedTag:Int = (tabBar.selectedItem?.tag)!
    print(selectedTag)
    switch selectedTag {
    case 0:
        print("tabBarItem1")
        //Do what ever you want here
    case 1:
        print("tabBarItem2")
        //Do what ever you want here
    case 2:
        print("tabBarItem3")
        //Do what ever you want here
    default:
        print("tabBarItem4")
        //Do what ever you want here
    }
}

【讨论】:

  • 很好地回答我的朋友@Ashok Kumar S
  • @YuvarajM。确保你设置了委托。
  • @Thanks Ashok,早上我自己修好了。
【解决方案2】:
- (void) setUpTabBar {
    FirstViewController *firstViewController = [[FirstViewController alloc]init];
    firstViewController.title = @"First View";
    firstViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemSearch tag:0];
    UINavigationController *firstNavController = [[UINavigationController alloc]initWithRootViewController:firstViewController];

    SecondViewController *secondViewController = [[SecondViewController alloc]init];
    secondViewController.title = @"Second View";
    secondViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1];
    UINavigationController *secondNavController = [[UINavigationController alloc]initWithRootViewController:secondViewController];

    ThirdViewController *thirdViewController = [[ThirdViewController alloc]init];
    thirdViewController.title = @"Third View";
    thirdViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemRecents tag:2];
    UINavigationController *thirdNavController = [[UINavigationController alloc]initWithRootViewController:thirdViewController];

    ForthViewController *forthViewController = [[ForthViewController alloc]init];
    forthViewController.title = @"Forth View";
    forthViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:2];
    UINavigationController *forthNavController = [[UINavigationController alloc]initWithRootViewController:forthViewController];

    tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
    tabBarController.viewControllers = [[NSArray alloc] initWithObjects:firstNavController, secondNavController, thirdNavController, forthNavController, nil];
    tabBarController.delegate = self;             
    [self sizeViewToAvailableWindow:[tabBarController view]];

    [firstNavController release];
    [firstViewController release];

    [secondNavController release];
    [secondViewController release];

    [thirdNavController release];
    [thirdViewController release];

    [forthNavController release];
    [forthViewController release];
}

这是以编程方式制作 TabBarController 的代码。 希望这会对你有所帮助。

【讨论】:

    【解决方案3】:

    这是你可以做的

        SubClassViewController1* vc1 = [[SubClassViewController1 alloc] init];
        UINavigationController* nav1 = [[UINavigationController alloc] initWithRootViewController:vc1];
        nav1.navigationBar.hidden = YES;
        [vc1 release]; vc1 = nil;
    
        SubClassViewController2* vc2 = [[SubClassViewController2 alloc] init];
        vc2.title = @"List";
        UINavigationController* nav2 = [[UINavigationController alloc] initWithRootViewController:vc2];
        nav2.navigationBar.hidden = YES;
        [vc2 release]; vc2 = nil;
    
        SubClassViewController3* vc3 = [[SubClassViewController3 alloc] init];
        vc3.title = @"Scan";
        UINavigationController* nav3 = [[UINavigationController alloc] initWithRootViewController:vc3];
        nav3.navigationBar.hidden = YES;
        [vc3 release]; vc3 = nil;
    
        SubClassViewController4* vc4 = [[SubClassViewController4 alloc] init];
        vc4.title = @"Setting";
        UINavigationController* nav4 = [[UINavigationController alloc] initWithRootViewController:vc4];
        nav4.navigationBar.hidden = YES;
        [vc4 release]; vc4 = nil;
    
        UITabBarController* tabBar = [[UITabBarController alloc] init];
        [tabBar setViewControllers:[NSArray arrayWithObjects:nav1,nav2,nav3,nav4,nil]];
    
        [self.navigationController pushViewController:tabBar animated:YES];
        [nav1 release]; nav1 = nil;
        [nav2 release]; nav2 = nil;
        [nav3 release]; nav3 = nil;
        [nav4 release]; nav4 = nil;
        [tabBar release]; tabBar = nil;
    

    这将创建一个带有四个选项卡的选项卡栏,每个选项卡都有自己的视图控制器和导航控制器,即每个选项卡都维护自己的堆栈来推送和弹出视图控制器。 希望对你有帮助。

    【讨论】:

    • 如何在没有控制器的情况下创建一个简单的 UITabBar?
    【解决方案4】:

    你可以这样做:

    UITabBar *tabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 430, 320, 50)];
    [self.view addSubview:tabBar];
    

    要添加一些项目,你可以这样写:

    NSMutableArray *tabBarItems = [[NSMutableArray alloc] init];
    UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Title" image:[UIImage imageNamed:@"Image.png"] tag:0];
    UITabBarItem *tabBarItem1 = [[UITabBarItem alloc] initWithTitle:@"Title1" image:[UIImage imageNamed:@"Image1.png"] tag:1];
    [tabBarItems addObject:tabBarItem];
    [tabBarItems addObject:tabBarItem1];
    tabBar.items = tabBarItems;
    tabBar.selectedItem = [tabBarItems objectAtIndex:0];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      相关资源
      最近更新 更多