Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@Feel-Physics

XIBやストーリーボードを使わずにタブバーによる画面遷移を行うには

More than 5 years have passed since last update.

スクリーンショット(2013-06-07 12.39.19).png

スクリーンショット(2013-06-07 12.39.32).png

まず以下記事を参照に2画面の遷移を実装する。

XIBやストーリーボードを使わずにEmpty Projectに画面を2つ追加し、お互いに画面遷移させるには #Objective-C #iOS - Qiita [キータ] http://qiita.com/items/9eaf6c7d9a04081e3ffc

上記記事をベースに変更を行い、ボタンで遷移していたのを、タブバーを使って遷移するようにする。

  1. アプリケーション本体のコードを書く

    2つのビューの代わりに「rootController」をつくる。

AppDelegate.h

〜略〜

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
//    UIViewController* viewController1_;
//    UIViewController* viewController2_;
    UIViewController* rootController_;
}

〜略〜

2つのビューのインスタンスは実装コードの中でつくり、それらをNSArrayに入れて、UITabBarController setViewControllers: animated:setViewControllers:引数に入れる。

AppDelegate.m

#import "AppDelegate.h"
#import "ViewController1.h"
#import "ViewController2.h"

@implementation AppDelegate

@synthesize window = _window;

- (void)dealloc
{
//    [viewController1_ release];
//    [viewController2_ release];
    [rootController_ release];

    [_window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
//    self.window.backgroundColor = [UIColor whiteColor];

//    [self.window addSubview:viewController1_.view];
//    [self.window addSubview:viewController2_.view];
//    [self.window bringSubviewToFront:viewController1_.view];

    rootController_ = [[UITabBarController alloc] init];
    ViewController1* tab1 = [[[ViewController1 alloc] init] autorelease];
    ViewController2* tab2 = [[[ViewController2 alloc] init] autorelease];
    NSArray* controllers = [NSArray arrayWithObjects:tab1, tab2, nil];
    [(UITabBarController*)rootController_ setViewControllers:controllers animated:NO];
    [self.window addSubview:rootController_.view];

    [self.window makeKeyAndVisible];
    return YES;
}
  1. 各ビューのコードを書く
ViewController1.m

〜略〜

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.title = @"Hello";
        self.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0] autorelease];
    }
    return self;
}

〜略〜

ViewController2.m

〜略〜

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.title = @"こんにちは";
        self.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemContacts tag:0] autorelease];
    }
    return self;
}

〜略〜

これでタブバーにより2画面を切り替えることができるようになった。


ブログやってます:PAPA-tronix !

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Feel-Physics
今はHoloLensのアプリを開発しており、技術記事はすべてブログ( http://weed.nagoya )に書いています。以前はSwift、OpenCV+Python、JavaScript、Objective-Cを書いていました。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?