簡體   English   中英

將故事板與自定義UITabbarController一起使用

[英]use storyboard with custom UITabbarController

我已經在這個問題上工作了一段時間,無法找到解決我問題的方法。

我有一個嘗試使用圖像進行自定義的標簽欄視圖控制器,我具有自定義圖形,但是我需要使用代碼來顯示和初始化標簽欄的視圖控制器。 我在其中一個標簽的頂部顯示導航欄時也遇到問題,我認為這與我如何啟動標簽視圖控制器有關

故事板顯示葯物標簽的頂部應該有一個導航欄,並且該視圖通過segue連接到標簽欄,您可以看到我嘗試使用故事板segue將我的視圖控制器鏈接到標簽欄控制器。 我在MedicationViewController.m中具有以下代碼

/
//  MedicationViewController.m
//  fibromapp
//
//  Created by jamie mcallister on 08/09/2013.
//  Copyright (c) 2013 Jamie McAllister. All rights reserved.
//

#import "MedicationViewController.h"
#import "TakenViewController.h"
#import "MedsListViewController.h"
#import "MedsAlarmViewController.h"

@interface MedicationViewController ()

@end

@implementation MedicationViewController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

        TakenViewController *viewController2 = [[TakenViewController alloc] init];
        MedsListViewController *viewController1 = [[MedsListViewController alloc] init];
        MedsAlarmViewController *viewController3 = [[MedsAlarmViewController alloc] init];


        self.viewControllers = [NSArray arrayWithObjects:viewController1,
                                viewController2,
                                viewController3,nil];
       UITabBarItem *tab1 = [[UITabBarItem alloc] initWithTitle:@"Medication" image:[UIImage imageNamed:NULL] tag:1];
        UITabBarItem *tab2 = [[UITabBarItem alloc] initWithTitle:@"Taken" image:[UIImage imageNamed:NULL] tag:2];
        UITabBarItem *tab3 = [[UITabBarItem alloc] initWithTitle:@"Alarms" image:[UIImage imageNamed:NULL] tag:3];
        UIImage* sel = [UIImage imageNamed:@"fmtabSel"];


        [viewController1 setTabBarItem:tab1];
        [viewController2 setTabBarItem:tab2];
        [viewController3 setTabBarItem:tab3];

        UIImage* tabBarBackground = [UIImage imageNamed:@"fmtab.png"];

        UITabBar *tabBar = self.tabBar;
        [tabBar setBackgroundImage:tabBarBackground];
        [tabBar setSelectionIndicatorImage:sel];
    }
    return self;
}


- (void)viewDidLoad
{
UITabBar *tabbar = self.tabBar;
NSLog(@"%f %f", tabbar.frame.size.width, tabbar.frame.size.height);//used to find the size of the bar
[super viewDidLoad];

UIImage* tabBarBackground = [UIImage imageNamed:@"fmtab.png"];
UIImage* sel = [UIImage imageNamed:@"fmtabSel"];
    UITabBar *tabBar = self.tabBar;
    [tabBar setBackgroundImage:tabBarBackground];
    [tabBar setSelectionIndicatorImage:sel];

    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

使用此代碼,我得到了選項卡,但是此選項卡的頂部沒有導航欄。

有人可以建議我必須做些什么來解決這個問題嗎?

如果您需要更多信息,請隨時提出,我將其編輯到該問題的底部。 提前致謝 :)

要具有導航欄,必須在選項卡控制器和第一個UIViewController之間放置一個UINavigationController。

所有這些都可以在情節提要中完成,而無需編寫任何代碼。

如果希望導航欄位於頂部,則應使用由根控制器(不僅僅是普通控制器)初始化的導航控制器來填充選項卡控制器。 像這樣:

TakenViewController *viewController2 = [[TakenViewController alloc] init];
MedsListViewController *viewController1 = [[MedsListViewController alloc] init];
MedsAlarmViewController *viewController3 = [[MedsAlarmViewController alloc] init];
UINavigationController * nc1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UINavigationController * nc2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
UINavigationController * nc3 = [[UINavigationController alloc] initWithRootViewController:viewController3];

self.viewControllers = [NSArray arrayWithObjects:nc1,
                                nc2,
                                nc3,nil];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM