わたしの日記だよ

ー生きる厳しさと哀しさを鮮烈に謳うー

Xcode6+swift で storyboadを使わずに実装する

以前、一度だけObject-CでiOSアプリを作ったことがあるのですが、

久しぶりにやってみたらXcodeの使い方すら

すっかり忘れ去っていたので、最初からお勉強しなおすことにしました。

せっかくなので、swiftにしてみます。

 

今回は、会社でやっていたときと同じく、storyboadは使わず

xibファイルだけ使います。

 

1.プロジェクト作成

 Single View Applicationを作成します。

 ↓こちらなどを参考に。

 Xcode6でストーリーボードを使わないで開発する - kzy52's blog

 

2.xibファイルとUIViewControllerを作成する

 xibとcontrollerを別々に作成したら、xibファイルを開いて

f:id:s31o3:20150226154229p:plain

 あとは、controllerのviewDidLoad()で、xibを指定してUIViewのインスタンスを作成し

 controller自身のviewに追加します。

 "xib-name"のところは、作成したxib名に置き換えます。

    let view:UIView = UINib(nibName: "xib-name", bundle: nil).instantiateWithOwner(self, options: nil)[0] as UIView
    self.view.addSubview(view)

 

 controllerから「Also create XIB file」にチェックを入れて、xibも一緒に作成した場合は

 xibの[Connection inspector]-[Outlets]-[view]を削除すれば大丈夫です。

 f:id:s31o3:20150226161240p:plain

 

 

 たったこれだけなのだけど、けっこう時間がかかってしまった。

 

 色々調べていたときに、

 ・UIViewControllerを作るときに「Also create XIB file」にチェックを入れれば、自動的に紐付く

 ・xibとcontrollerを別々に作ってから、File's Ownerの指定と[Connections Inspector]-[Outlets]-[view]

 を設定すれば紐付く

 とか見かけたのですが、わたしの環境だとうまく行きませんでした。

 

  エラーにはならないものの、何も表示されない。

 →でも、controllerに上記と同じコードを追加すると

 「Can't add self as subview」エラーが出るので、全然紐付いてないわけじゃないみたいなのに!!

 

 ほんとはもっとスマートな方法があるのかも。