IOS:将viewcontroller添加到ios中的自定义TabBar

Posted

技术标签:

【中文标题】IOS:将viewcontroller添加到ios中的自定义TabBar【英文标题】:IOS: Adding viewcontroller to custom TabBar in ios 【发布时间】:2016-02-05 05:07:51 【问题描述】:

我正在处理一个聊天项目,我必须在其中使用UITabBar。我在这个项目中使用故事板,但根据要求,我在项目中添加了自定义 TabBar 以将其安装在视图顶部。 现在的问题是自定义 TabBar 在视图顶部显示良好,但是当我单击选项卡时,它只显示黑屏而不显示 ViewControllers。 我正在分享我的代码,请建议我解决它。

我的 .h 文件

@interface TabBar : UITabBarController



@property(strong,nonatomic) UITabBarController *tabbarcontroller;
@property(strong,nonatomic) ChatListVC *chatlist;
@property(strong,nonatomic) ContactListVc *contactlist;
@property(strong,nonatomic) FindfriendsVC *findfriends;

@end

我的 .m 文件

@implementation TabBar

    - (void)viewDidLoad

        
            [super viewDidLoad];
            // Do any additional setup after loading the view.
        //    self.navigationItem.hidesBackButton=YES;

            self.title = @"Chat Home Page";

            self.navigationController.navigationBar.backgroundColor = [UIColor blueColor];

            _chatlist = [ChatListVC new];
            _contactlist = [ContactListVc new];
            _findfriends = [FindfriendsVC new];     //initWithNibName:@"FindfriendsVC" bundle:nil];//[FindfriendsVC new];

            self.tabbarcontroller = [[UITabBarController alloc]init];

            self.viewControllers = [NSArray arrayWithObjects:_chatlist,_contactlist,_findfriends, nil];

            //self.navigationController.navigationBar.frame.size.height;
            //UITabBar *tabBar = self.tabBarController.tabBar;
            //CGFloat topBarOffset = self.topLayoutGuide.length;
            self.tabBar.frame =CGRectMake(0,44,self.view.frame.size.width,50);

            UITabBarItem *item0 = [self.tabBar.items objectAtIndex:0];
            UITabBarItem *item1 = [self.tabBar.items objectAtIndex:1];
            UITabBarItem *item2 = [self.tabBar.items objectAtIndex:2];

            item0.title = @"Chat List";
            item1.title = @"Contacts";
            item2.title = @"Find Friends";

            [item0 setFinishedSelectedImage:[UIImage imageNamed:@"chatlist.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"chatlist.png"]];
            [item1 setFinishedSelectedImage:[UIImage imageNamed:@"contacts.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"contacts.png"]];
            [item2 setFinishedSelectedImage:[UIImage imageNamed:@"findfriends.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"findfriends.png"]];

        

输出的快照是

【问题讨论】:

Storyboard 的 Tabbarcontroller 中添加了 Viewcontrollers 吗? 我在这里使用自定义标签栏 您的视图控制器的视图没有加载。 (即 ChatListVC 的视图未从 Storyboard 加载) 是的视图没有加载 检查 Allanah Douglas 给出的答案。它会起作用的。 【参考方案1】:

您的视图控制器似乎没有正确初始化。

如果您的视图控制器都在情节提要中,请尝试替换

_chatlist = [ChatListVC new];
_contactlist = [ContactListVc new];
_findfriends = [FindfriendsVC new];

与:

_chatlist = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ChatListIdentifier"];
_contactlist = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListIdentifier"];
_findfriends = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"FindfriendsIdentifier"];

标识符字符串是您在情节提要中设置的您自己的标识符。

【讨论】:

标识符表示情节提要 ID?

以上是关于IOS:将viewcontroller添加到ios中的自定义TabBar的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 中将 ViewController 的 View 作为子视图添加到 UIPageViewController 会在显示/隐藏时产生奇怪的 UINavigationBar

iOS - 使用 xib 中的 tabBarController 将数据从一个 viewController 传递到另一个 viewController

对于 iOS,将 ViewController.xib 自定义类更改为另一个类是啥意思?

iOS AirPlay 第二屏教程

Xcode Storyboard:无法将视图添加到 ViewController

将进度从 NSURLSession 发送到 ViewController [swift - iOS]