MonoTouchを使ったiPhoneアプリ開発 (2)

続いて、SwitchViewControllerの実装を行っていきます。
まずは、SwitchViewController.xlibをダブルクリックして、Interface Builderを起動させます。
Libraryの上での方でClassesを選択し、SwitchViewControllerを選択します。
下の方で、InheritaitをOutletsに切り替えます。
+ボタンを押して、TypeをUIBarButtonItemにしてアウトレットを追加します。
画像


次に、アウトレットとBar Button Itemを関連づけます。
SwitchViewController.xlibのウィンドウのFiles's Ownerを右クリックして、表示されたアウトレットをTool Barのボタンにドラッグしていって関連づけます。
そしてInterface Builderで保存して、MonoTouchに戻ります。
画像


MonoTouchでSwitchViewController.xlib.csを開きます。
まずは二つのビュー、MainViewControllerとEditViewControllerのプロパティを作ります。

public partial class SwitchViewController : UIViewController
{
    public MainViewController MainView { get; set; }
    public EditViewController EditView { get; set; }


このプロパティはまぁ、publicにする必要はないとは思いますが。

そして、起動時の表示を実装するため、ViewDidLoadメソッドをオーバーライドします。

public override void ViewDidLoad()
{
    base.ViewDidLoad();

    button.Clicked += HandleButtonClicked;

    MainView = new MainViewController();
    this.View.InsertSubview(MainView.View, 0);

}

MainViewプロパティだけnewしているのは、最初に表示するのがMainViewControllerで、ユーザがEditViewControllerを呼ばないかもしれないのでこうしています。
ま、この辺は「はじめてのiPhone3プログラミング」を参考にしていて、一応その流儀に従っていますが、本の説明のメモリを少しでも少なく消費するのは理にかなっていると思います。
で、MainViewプロパティをnewして、そのあとでInsertSubviewでMainViewControlerビューを追加して初期表示をさせています。

ここで、MonoTouchはコード補完がしてくれるのでどんなEventのメソッドがあるのかわからなくても大丈夫になっています。
画像
黄色が表示してくれるし、delegateは候補をしめすだけではなくてメソッドも作ってくれます。
画像
ここではMonoTouchが作ってくれたHandleButtonClickedメソッドにボタンを押したときの表示切り替えを実装することにします。
この辺りのイメージはObjective-Cがわからなくても、Windowsで.NETのWindowsFormを作成していたらイメージがつかめると思います。

で、ビューの切り替えの実装の方は

void HandleButtonClicked (object sender, EventArgs e)
{
    if (this.MainView.View.Superview != null)
    {
        MainView.View.RemoveFromSuperview();
        if (EditView == null)
            EditView = new EditViewController();
        this.View.InsertSubview(EditView.View, 0);

        EditView.InitControl();

    }
    else if (EditView.View.Superview != null)
    {

        EditView.View.RemoveFromSuperview();
        if (MainView == null)
            MainView = new MainViewController();
        this.View.InsertSubview(MainView.View, 0);
    }
}

この実装も「はじめてのiPhone3プログラミング」を参考にしています。
なお、EditView.InitControl();のところはEditViewControllerの画面初期化のために私が作ったメソッドです。
MainViewControllerとEditViewControllerの実装は省かせていただきます。

以上のように実装して、ボタンによる画面の切り替えが可能になりました。
よくよく考えれば、MainViewControllerビューとEditViewControllerビューは「iPhone View with Controller」ではなくて「iPhone View」で良かったかもしれません。
また、EditViewControllerをモーダルViewとして作ってもよかったかもしれません。
そこはご容赦を。

MonoTouchというかMonoDevelopの感想ですが、結構VisualStudioっぽくなっているなぁと思いますが、やっぱりVSに比べるとかゆいところに微妙に手が届かないところがあります。
でもVSの場合機能リッチな分だけ重量感もありますが、MonoDevelopはさくさく動くし、便利だなぁと思います。
それにMonoTouchを使うと、C#でiPhoneアプリが作れちゃうのはやっぱりべんりですねぇ~。
日本語表示に苦労したり、インラインで日本語が入力できなかったり、コードフォーマットするとVSとは異なる形に整形したりと、いろいろと問題はありますが、十分に使えると思います。
MonoDevelopを使うと、VS+ReSharperは偉大だなぁと思いました(w

最後に、MonoDevelopはインストール直後の初期状態では日本語が表示されません。
その方法はググってもらうとして、ただその修正方法だけではだめで、表示フォントもかえないと正しくは表示されないと思います。
私もしばらく悩みました。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック