iphoneアプリでコントロールを動的に生成・削除
ボタンを適当に複数生成して、押されると削除される例です。
ちょっとまだObjective-Cの勉強始めたばかりなので、メモリ管理とか大丈夫かわかりませんが。
適当に注意しながら参考にしてくださいw
ボタン管理用の連想配列用意
【ヘッダファイル】
NSMutableDictionary *buttons; int button_id;
【実装ファイル】
viewDidLoadとかで
buttons = [[NSMutableDictionary alloc] init]; for(int i=0;i<3;i++) { int pos[] = {10,30*i}; [self makeButton:[NSString stringWithFormat:@"label %d", i] position:pos]; }
ボタン作成と配列への登録を行うメソッド
- (void)makeButton:(NSString *)label position:(int *)pos { UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(pos[0], pos[1], 100, 30); // x(左0) y(上0) width height button.tag = button_id; // 識別用ID [button setTitle:label forState:UIControlStateNormal]; [button addTarget:self action:@selector(pushed_button:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; [buttons setObject:button forKey:[NSString stringWithFormat:@"%d", button_id++]]; }
押されると削除されるイベント関数
-(void)pushed_button:(id)sender { int num = [sender tag]; // 該当ボタンの検索 if ([[buttons allKeys] containsObject:[NSString stringWithFormat:@"%d", num]]) { NSLog(@"Delete"); // ボタンの削除 UIButton *button = [buttons objectForKey:[NSString stringWithFormat:@"%d", num]]; [button removeFromSuperview]; // リストからも除去 [buttons removeObjectForKey:[NSString stringWithFormat:@"%d", num]]; } }