2013年6月1日土曜日

動的にオブジェクトを生成

これは画像の貼り付けのときにやったものを応用するだけ。

例えばラベルの場合はViewController.mのViewDidLoadにこんなの書いてみると

    //UIlabelのlabelをインスタンス化。
    UILabel *label = [[UILabel alloc]init];
    //frameプロパティに対してGCRectMAkeで大きさを指定。
    label.frame = CGRectMake(50, 50, 200, 200);
    //labelにテキストを設定。
    label.text = @"label";
    //背景色に赤を設定。
    label.backgroundColor = [UIColor redColor];
    //テキストの位置設定。iOS6からはUITextAlignmentCenter
      ではなくNSTextAlignmentCenterなんだそーな
    label.textAlignment = NSTextAlignmentCenter;
    //labelを現在のViewに貼付け。
    [self.view addSubview:label];

んで実行するとこう。


前回の記事で紹介したUISwitchもこんな感じでソースファイルにかきかき。
(めんどくさいのでViewController.mの一部をそのままコピペ)

- (void)viewDidLoad
{
    [super viewDidLoad];
 // Do any additional setup after loading the view, typically from a nib.
    UISwitch *switchA = [[UISwitch alloc]init];
    //大きさ設定しても変わるのは位置だけ
    switchA.frame = CGRectMake(40, 40, 240, 240);
    //スイッチの初期状態を選択
    switchA.on = YES;
    
    //スイッチを切り替えたときに呼び出すメソッドを設定
    [switchA addTarget:self action:@selector(switchValueChange:) 
     forControlEvents:UIControlEventValueChanged];
    
    [self.view addSubview:switchA];
    
}

/*
 スイッチの切り替え時に呼び出すメソッド。
 引数にはswitchAが渡されています。
 */
- (void)switchValueChange:(UISwitch *)sender
{
    //ここからは前回紹介したときと同じ処理。
    if (sender.on) {
        [self showalert:@"ON"];
    }else{
        [self showalert:@"OFF"];
    }
}

- (void)showalert:(NSString*)message
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"switch"
                                                   message:message
                                                  delegate:self
                                         cancelButtonTitle:@"OK"
                                         otherButtonTitles:nil, nil];
    [alert show];
}


他のControllerなどはこちらのサイト(iPhoneアプリ開発虎の巻 様)に詳しく書いてあります。

0 件のコメント:

コメントを投稿