Hatena::Groupiphone-dev

淡々とめもりんぐ

 | 

2010-09-07

[]部品のプロパティ参照したりとかってどうやってするの? 14:51

Visual StudioでいうところのコントロールにNameを指定すれば、同じクラスの中ではNameにアクセスすればプロパティ見たり操作したりできる、っていうのをどうやってすればいいんだ!!!Nameってあるけどなんかオブジェクトとして使えるわけじゃないし…とかって悩んでたんだけどやっと解決した。

//hoge.h
@interface hoge:UIViewController{
    IBOutlet UILabel *message;
    IBOutlet UIView *view1;
}

@end

//hoge.m
- (void)viewDidLoad{
    [super viewDidLoad];
//IB使う場合
    message.txt = @"MESSAGE";
    [view1.layer setCornerRadius:10.0];
    [view1.layer setBorderColor:[[UIColor grayColor]CGColor]];

//IB使わない場合(view1に貼り付けてみる)
    UILabel *message2 = [[[UILabel alloc]initWithFrame:CGRectMake(0,0,100,30)] autorelease];
    message2.text = @"MESSAGE2";
    [view1 addSubview:message2];
    [message2 release];
}

IBのほうで作った部品はFile's Ownerから部品へ対応するOutletでリンクすること。これでオブジェクトとコントロールが結びつく。

はー。すげー基本的なことだとはわかってるんだけど、こういうのがわからんのだよなあ。


[][]viewからnavigation Controllerに移動して表示ができた!!! 18:01


やっとできたー。本のとおりから少し変形したらできなくなるとか…もうね…orz

やっていること

  1. MainWindowにViewを貼り付ける。
  2. ViewにさらにNavigationControllerを貼り付けてその中にViewを表示する

問題だったところ

XxxAppDelegate.hで、

/*XxxAppDelegate.h*/
@interface XxxAppDelegate : NSObeject<UIApplicationDelegate>{
    UIWindow *window;
    UIViewController *controller;
}
/*XxxAppDelegate.h*/
@synthesize controller;
(中略)
controller = [[MainViewController alloc]initWithNibName:@"MainView" bundle:[NSBundle mainBundle]];

って宣言してたんだけどインクルードファイルが問題だった様子。貼り付けるViewのサブクラスをMainViewControllerとするとき、ここはUIViewControllerではなくMainViewControllerとすべき、らしい。

ここをUIViewControllerにしていると、"loaded the "*" nib but the view outlet was not set."とか"unrecognized selector sent to instance xxx"とかいわれるらしい。前者のほうは違う原因の気もするけれども…。

 |