2011年2月28日月曜日

@class

お互いに参照し合うようにヘッダファイルをインポートするとエラーが起きる。ヘッダファイルにはヘッダファイルをインポートせずに、使用する型がクラスであるという事だけを宣言して(@class MainController;)、ソースファイル側にヘッダファイルをインポートする。

PhotosController.h
 #import <uikit/uikit.h>
 @class MainController;
 @interface PhotosController : UIViewController {
   MainController *parent;
 }
 @property (nonatomic, retain) MainController *parent;
 @end
MainController.h
 #import <uikit/uikit.h>
 @class PhotosController;
 @interface MainController : UIViewController {
   PhotosController *_photosController;
 }
 @property (nonatomic, retain) PhotosController *_photosController;
 @end

2011年2月27日日曜日

UINavigationControllerとかUIViewControllerのparentViewControllerとか

UIViewControllerを作って、UINavigationControllerのrootViewControllerとして初期化する。
そして、ViewControllerのview.frameをCGRectMakeでサイズを変更すると変更できない。
UINavigationControllerのview.frameをCGRectMakeでリサイズすると変更される。
やっぱNavigationControllerってView全体を入れ替えるための仕組みなんだなぁ。
単なるビューコントローラのサブクラスじゃないんだな。

UIViewControllerのプロパティにparentViewControllerというのがあり、
UINavigationControllerから初期化したときなど呼び出し元のコントローラがセットされる。
(initWithRootViewController:ほげほげなどとした場合。)

カスタムコントローラを親コントローラにしたいのだけど、このプロパティをセットする方法がなぜか見つからない。
とりあえず、親コントローラに設定したいコントローラのポインタを持たせる方法で回避。

2011年2月18日金曜日

信号機

iPhoneって結構写真きれいに撮れる。
プリンストンから魚眼レンズが出てたのだけど、
信じられないくらい安かったので試しに買ってみた。
けっこういいね(^^


2011年2月17日木曜日

UIViewControllerがtouchesに反応しない

viewコントローラの初期化を以下のようにしたら直った。
TestViewController *myController = [[[TestViewController alloc] init]autorelease];
↓変更
TestViewController *myController = [[TestViewController alloc] init];
コントローラを保持していなかったため、解放されていた??
http://akisute.com/2009/10/uiviewcontrollertouchesbegantouchesende.html
autoreleaseはプログラムが終了しなければリリースされないと思っていた??
まだ解らない事多い。