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月28日月曜日
@class
お互いに参照し合うようにヘッダファイルをインポートするとエラーが起きる。ヘッダファイルにはヘッダファイルをインポートせずに、使用する型がクラスであるという事だけを宣言して(@class MainController;)、ソースファイル側にヘッダファイルをインポートする。
ラベル:
iPhone,
Objective-C,
プログラミング
2011年2月27日日曜日
UINavigationControllerとかUIViewControllerのparentViewControllerとか
UIViewControllerを作って、UINavigationControllerのrootViewControllerとして初期化する。
そして、ViewControllerのview.frameをCGRectMakeでサイズを変更すると変更できない。
UINavigationControllerのview.frameをCGRectMakeでリサイズすると変更される。
やっぱNavigationControllerってView全体を入れ替えるための仕組みなんだなぁ。
単なるビューコントローラのサブクラスじゃないんだな。
UIViewControllerのプロパティにparentViewControllerというのがあり、
UINavigationControllerから初期化したときなど呼び出し元のコントローラがセットされる。
(initWithRootViewController:ほげほげなどとした場合。)
カスタムコントローラを親コントローラにしたいのだけど、このプロパティをセットする方法がなぜか見つからない。
とりあえず、親コントローラに設定したいコントローラのポインタを持たせる方法で回避。
そして、ViewControllerのview.frameをCGRectMakeでサイズを変更すると変更できない。
UINavigationControllerのview.frameをCGRectMakeでリサイズすると変更される。
やっぱNavigationControllerってView全体を入れ替えるための仕組みなんだなぁ。
単なるビューコントローラのサブクラスじゃないんだな。
UIViewControllerのプロパティにparentViewControllerというのがあり、
UINavigationControllerから初期化したときなど呼び出し元のコントローラがセットされる。
(initWithRootViewController:ほげほげなどとした場合。)
カスタムコントローラを親コントローラにしたいのだけど、このプロパティをセットする方法がなぜか見つからない。
とりあえず、親コントローラに設定したいコントローラのポインタを持たせる方法で回避。
ラベル:
iPhone,
Objective-C,
プログラミング
2011年2月18日金曜日
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はプログラムが終了しなければリリースされないと思っていた??
まだ解らない事多い。
TestViewController *myController = [[[TestViewController alloc] init]autorelease];
↓変更
TestViewController *myController = [[TestViewController alloc] init];
コントローラを保持していなかったため、解放されていた??
http://akisute.com/2009/10/uiviewcontrollertouchesbegantouchesende.html
autoreleaseはプログラムが終了しなければリリースされないと思っていた??
まだ解らない事多い。
登録:
投稿 (Atom)