ユーザーによって動的に追加されるラベルを持つビューがあります。ユーザーがいずれかのラベルを編集したい場合は、ボタンを押すと、すべてのラベルが削除ボタンと移動ボタンで強調表示されます。(編集は後で渡る別の橋です)。
私の問題は次のとおりです。ボタンをオンまたはオフにする最良の方法は何ですか? ボタンをオンにする方法はあるのですが…編集が終わったらオフにする方法に困っています。ボタンにタグを付けて「非表示」にする必要がありますか? それとも、それらをすべて完全に削除するだけですか? オンになっているすべてのボタンを解析してからオフにするにはどうすればよいですか。それらも配列に入れる必要がありますか?ラベルには一意の番号が付けられているため、どのラベルがどれであるかがわかります。
何かご意見は?ガイダンス?私がそれをすべて間違っている場合は、教えてください。
ここに私が持っているいくつかの方法があります:
- (void) showEditableText {
// Parse the array of labels
if(textArray.count > 0){
for(UILabel *label in textArray){
//Add Delete Button
UIImage * delButtonImage = [UIImage imageNamed:@"GUI_Delete.png"];
UIButton * delThisButton = [[UIButton alloc] initWithFrame:CGRectMake(label.frame.origin.x - delButtonImage.size.width, label.frame.origin.y - delButtonImage.size.height, delButtonImage.size.width, delButtonImage.size.height)];
[delThisButton setBackgroundImage:delButtonImage forState:UIControlStateNormal];
[delThisButton addTarget:self action:@selector(deleteThisLabel:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:delThisButton];
//Add a move button
UIImage * moveButtonImage = [UIImage imageNamed:@"GUI_Move.png"];
UIButton * moveThisButton = [[UIButton alloc] initWithFrame:CGRectMake((label.frame.origin.x + label.frame.size.width + moveButtonImage.size.width), label.frame.origin.y - moveButtonImage.size.height, moveButtonImage.size.width, moveButtonImage.size.height)];
[moveThisButton setBackgroundImage:moveButtonImage forState:UIControlStateNormal];
[moveThisButton addTarget:self action:@selector(moveThisLabel:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:moveThisButton];
//Make the text highlighed
label.highlighted = YES;
label.backgroundColor = [UIColor colorWithRed:203/255.0f green:230/255.0f blue:239/255.0f alpha:1];
label.highlightedTextColor = [UIColor redColor];
}
}
}
- (void) doneEditingText {
if(textArray.count > 0){
for(UILabel *label in textArray){
//THIS IS WHERE I AM STUCK? WHAT DO I DO?
label.highlighted = NO;
label.backgroundColor = [UIColor clearColor];
}
}
}