Xcodeの挙動をgitを使いながら追う
はじめに
Interface Builderなどで作っていくと、
Xcodeが内部の設定ファイルを書きかえるなどして、
プロジェクトを構築していくはずなので、それを探る
Labelを置いてみたとき
chapter4.xcodeproj/project.xcworkspace/xcuserdata/ユーザ名.xcuserdatad/UserInterfaceState.xcuserstate chapter4/en.lproj/ViewController.xib
の2ファイルが変化したもよう。
UserInterfaceState.xcuserstateファイル
なんてこったバイナリーファイルみたい.....
プロジェクトが開くたびに更新されるみたいということで、
バージョン管理には入れてない人が多いみたい。
参考:
個人的なXcode用.gitignore – LexTech
http://www.awaresoft.jp/ios-dev/item/95-xcode-4%E3%81%A7%E6%97%A2%E5%AD%98%E3%81%AExcode%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%8B%E3%82%89%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%ABgit%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF.html
ViewController.xibファイル
これはViewController.xibファイルをインターフェースビルダーで
いじったので変更されて当然といったところか。
中身を見てみるとXMLファイルだった。
すげー、色々増えたが、逐一調べている余裕がなさそうなのでとばす。
IBOutletに接続
ViewController.hに以下を追加
@interface ViewController : UIViewController{ IBOutlet UILabel *myLabel; }@end
File's Ownerから画面にドラッグして接続(File's Owner → 画面)
変更があったのは、無視すると決めたUserInterfaceState.xcuserstateを除いては、
ViewController.h ViewController.xib
の2つ。
見たことないファイルが変更されてなくてよかった。
ViewController.hは自分で編集したので当然として、
やはり問題は、ViewController.xib。
色々増えてるんだけど、やはり調べてる余裕はなさそうなので飛ばす。
個人的には、
<string key="NS.key.0">myLabel</string>
というように、変数名が記載されたところがあるのでこの辺りが重要なのかと思う。
IBActionに接続
まずActionをヘッダーに宣言
@interface ViewController : UIViewController{ IBOutlet UILabel *myLabel; } -(IBAction) tapBtn; @end
あとUIViewController.xibにボタンを配置。
やはり
ViewController.h ViewController.xib
に変更あり。
ViewController.mに以下を追加
@implementation ViewController -(IBAction)tapBtn{ myLabel.text = @"Hello!"; }
変更があったのは、
ViewController.m
これは当然。
シミュレーターで実行すればちゃんと動いた。