0

ユーザーによって動的に追加されるラベルを持つビューがあります。ユーザーがいずれかのラベルを編集したい場合は、ボタンを押すと、すべてのラベルが削除ボタンと移動ボタンで強調表示されます。(編集は後で渡る別の橋です)。

私の問題は次のとおりです。ボタンをオンまたはオフにする最良の方法は何ですか? ボタンをオンにする方法はあるのですが…編集が終わったらオフにする方法に困っています。ボタンにタグを付けて「非表示」にする必要がありますか? それとも、それらをすべて完全に削除するだけですか? オンになっているすべてのボタンを解析してからオフにするにはどうすればよいですか。それらも配列に入れる必要がありますか?ラベルには一意の番号が付けられているため、どのラベルがどれであるかがわかります。

何かご意見は?ガイダンス?私がそれをすべて間違っている場合は、教えてください。

ここに私が持っているいくつかの方法があります:

- (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];
         }
    }
}
4

3 に答える 3

2
//inside your first method set the same tag to your all buttons

-(void) showEditableText {

........
.......
.......
 delThisButton.tag = 10;

 moveThisButton.tag = 10;

}

//inside your second method delete all the subviews using this tag as shown below..

-(void) doneEditingText {

    if(textArray.count > 0){
        for(UILabel *label in textArray){
..............................

//THIS IS WHERE I AM STUCK? WHAT DO I DO?

    for (UIView *subview in [self.view subviews]) {
        if (subview.tag == 10) {
            [subview removeFromSuperview];
        }
    }
...............................

            label.highlighted = NO;
            label.backgroundColor  = [UIColor clearColor];
         }
    }
}
于 2013-01-23T04:49:50.940 に答える
0

これを試して

UIView *   seletetButton = nil;
for (UIView * btn in self.view.subviews){
    if ([btn isKindOfClass:[UIButton class]])
    {
        if (seletetButton.tag != btn.tag)
        {
            [btn removeFromSuperview];
        }
    }
}
于 2013-01-23T06:40:15.163 に答える
0

すべてのボタン コードを に移動しviewDidLoad、非表示にします ( button.hidden = YES)。テキストの編集を開始/終了したら、ボタンを再表示して非表示にします。ボタンを含めるには ivar も必要です。したがって、それらを .h ファイルに追加します。

于 2013-01-23T03:34:19.097 に答える