Ruby Motionチュートリアルやってみた(3)



Ruby Motionチュートリアルをやってます。前回の記事はこちら

Ruby Motionチュートリアルはこちら。


▼開発環境
Ruby 2.5.3
Xcode 10.1
Ruby Motion 5.16

今回は、Controllerについてのお話出そうです。

Ruby Motionでも基本的にはMVCモデルを採用しているようですね!MVCについての説明は省きますよ?

iOSの世界では、コントローラーは「UIViewController」出そうなんです。

UIViewControllerには一つのviewとライフサイクルの処理のようなメソッドがあるんだって。ちなみに、デバイスの横向き、縦向きの処理をするのもコントローラー。

とりあえず、コントローラーを作成して行こう!!デフォルトでフォルダは作られてないので、/appの中にcontrollersフォルダを作成しときます。

次にコントローラーのファイルであるTapController.rbを作ります。その中に次のコードを記述します。

class TapController < UIViewController
  def viewDidLoad
    super

    self.view.backgroundColor = UIColor.redColor
  end
end

このファイルは、コントローラーだよってちゃんと教えて上げるために、UIViewControllerを継承してますね!

まぁ、superはわかると思うので省略。んで、ここでやってるのは、「self.view.backgroundColor = UIColor.redColor」ということ。要するに、このコントローラーに対応するviewの背景を赤色にしろって指示だね。

あ、superに対してチュートリアルも説明すっ飛ばしてるw

皆さんは、絶対、問答無用に viewDidLoad で super を呼び出す必要があります。そうでなければ、良くないことが起こるでしょう。分かりました?

さて、前章で書いたviewの記述を削除して、今度はTapControllerの設定が読み込まれるようにしましょう。

class AppDelegate
 def application(application, didFinishLaunchingWithOptions:launchOptions)
   @window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
   @window.makeKeyAndVisible
   @window.rootViewController = TapController.alloc.initWithNibName(nil, bundle: nil)
   true
 end
end

ここで新しく出てきたのは、rootViewControllerですね〜。チュートリアルには特に説明ないですが、名前からしてトップページのコントローラーの指定をしてるんだと思います。

んで、トップページのコントローラーに該当するのがさっき作ったTapController。これを設定していると。もう一個、新しいメソッドがあって、「initWithNibName」ですね。なんでも、「NIB」ファイルからコントローラーを読み込むために必要なんだとか。

てか、「NIB」ファイルってなに?って感じなんです、なんでも Xcode の Interface Builder を使うことで作られるそう。

うん!よくわからん!

チュートリアルも使わないんで、nilを渡してるって書いてる。

さ〜、いよいよ実行してみよう!実行はrakeですよ?

てか、実行してうまくいってんじゃん!「makeKeyAndVisible」が使えるようになってるじゃん!!!!なんで〜〜〜?_?意味不明すぎる。。。まぁ、いいか。

さてさて、画面が赤いだけでは味気がないので、色々追加してみましょう。

 def viewDidLoad
   super
   self.view.backgroundColor = UIColor.whiteColor
   @label = UILabel.alloc.initWithFrame(CGRectZero)
   @label.text = "Taps"
   @label.sizeToFit
   @label.center = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height / 2)
   self.view.addSubview @label
 end

今度は、背景を白色に。

UILabelというのは、textプロパティで静的なテキストを表示するためのビューだそうです。おお、めっちゃ使えそう。ちな、CGRectZeroって?初期化する時に使えるっぽいけど。。。

調べたら、x,y,w,hの全部がゼロのやつのことをいうんだって。

つまり表示しないってことじゃん!!って思ったけど、sizeToFitって便利なメソッドがあるらしい!

内容に合わせて自動的にサイズを調整してくれるメソッドらしいですよ!

あとは、そのまんまかな?

という訳で、いざ実行〜!!


OK!ちゃんと表示された!

ということでまとめを引用しま〜す。

Wrap Up
今回、学んだことは何だった?

iOS SDK は Model-View-Controller を使います。
UIViewController はコントローラの一部を作成し、カスタマイズのために UIViewController のサブクラスを作ります。
コントローラをセットアップするときには viewDidLoad を使い、*super* を呼び出しておくことを忘れてはいけません。
UIWindow はコントローラを表示するために rootViewController プロパティを持ってます。

Ruby Motionチュートリアルやってみた(4)に続く。


サポートしていただけると、泣いて喜びます! 嬉しくて仕事をめちゃめちゃ頑張れます。