developer's diary

最近はc#のエントリが多いです

Xamarin StudioでiOSアプリ開発のチュートリアルをやってみた。

今日の朝チュートリアルは、tabbed_applicationsの作成。

詳細はコチラ

完成品はこんな感じ。

f:id:mitsugi-bb:20130228072556p:plain

f:id:mitsugi-bb:20130228072603p:plain

f:id:mitsugi-bb:20130228072607p:plain

タブボタンを押すとUIViewが切り替わるという内容。 今回はemptyテンプレートからの作成で、xibやstoryboardは使いません。

emptyProject作成後に、新規クラスの作成 (ソリューションエクスプローラ>右クリック>追加>新しいファイル)

f:id:mitsugi-bb:20130228072909p:plain

ファイル名は、「UITabBarController」

追加したファイルを編集。

usingを追加。MonoTouch.UIKitを読み込む。

using MonoTouch.UIKit;

TabBarControllerクラスはUITabBarControllerを継承するよう修正。

public class TabBarController: UITabBarController 
{
}

AppDelegate.csを修正し、作成したTabBarControllerをwindow.RootViewControllerに設定。

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
    window = new UIWindow (UIScreen.MainScreen.Bounds);

    //↓追加
    tabBarController = new TabBarController ();
    window.RootViewController = tabBarController;   
    //↑追加

    window.MakeKeyAndVisible ();
    return true;
}   

これでひとまず作成した、TabBarControllerが読み込まれる。 実行するとこんな画面。タブが表示されて画面真っ黒。

f:id:mitsugi-bb:20130228073635p:plain

TabBarControllerにコンストラクタを追加

       //タブを押したときに表示されるUIViewControllerの変数をclass変数として持つ
        UIViewController tab1;

        public TabBarController ()
        {
            //UIViewControllerのインスタンスを生成してtab1に設定
            tab1 = new UIViewController();

            //UIViewControllerの背景を白に
            tab1.View.BackgroundColor = UIColor.White;

            //タブを配列にしてViewControllersに設定
            var tabs = new UIViewController { tab1 };
            this.ViewControllers = tabs;
        }

ViewControllersはUITabBarControllerのプロパティで、管理してるUIViewが入るのだと思います。 チュートリアルではthisを省略しているが、ここでは意味が分かるようにthisを追加しました。

これで実行すると、

f:id:mitsugi-bb:20130228074545p:plain

これじゃ寂しいのでタブに日本語をつけてみます。

       //タブを押したときに表示されるUIViewControllerの変数をclass変数として持つ
        UIViewController tab1;

        public TabBarController ()
        {
            //UIViewControllerのインスタンスを生成してtab1に設定
            tab1 = new UIViewController();

            //UIViewControllerの背景を白に
            tab1.View.BackgroundColor = UIColor.White;

            //タブのタイトルを追加
            tab1.TabBarItem.Title = "日本語タブ";

            //タブを配列にしてViewControllersに設定
            var tabs = new UIViewController { tab1 };
            this.ViewControllers = tabs;
        }

f:id:mitsugi-bb:20130228074935p:plain

ちなみに、tab1.TabBarItemに画像を入れたりシステムのタブにする場合は

下記のようにUITabBarItemインスタンスを作成して設定するイメージです。

//システムのコンタクトアイコンのボタンを利用
tab1.TabBarItem = new UITabBarItem(UITabBarSystemItem.Contacts, 0);

//タイトル文字と画像を設定する場合
tab1.TabBarItem = new UITabBarItem("title" , UIImage.FromFile("second.png"),0);

f:id:mitsugi-bb:20130228075646p:plain

f:id:mitsugi-bb:20130228075950p:plain

バッチをつける場合は、BadgeValueに文字列を設定。

tab1.TabBarItem.BadgeValue = "321";

f:id:mitsugi-bb:20130228080209p:plain

こんな感じでタブを弄るみたいです。