1

私は を持っていUITextViewますUIViewController。その中にUITextView、メモ用に複数のチェックボックスを挿入する必要があります。

複数のチェックボックスを作成するには??

I have created Multiple CheckBoxes for `UIButton` Click, But When I Select or DeSelect operation, all ChecKBoxes Value changes.

複数のチェックボックスを作成し、それらのチェックボックスのメソッドを動的に作成するにはどうすればよいですか?

出来ますか?

これが私のコードです:

-(void)Check
{
    CGPoint origin = note.frame.origin;
    NSString* head = [note.text substringToIndex:note.selectedRange.location];
    CGSize initialSize = [head sizeWithFont:note.font constrainedToSize:note.contentSize];
    NSUInteger startOfLine = [head length];

    NSString* tail = [head substringFromIndex:startOfLine];
    CGSize lineSize = [tail sizeWithFont:note.font forWidth:note.contentSize.width lineBreakMode:UILineBreakModeWordWrap];
    CGPoint cursor = origin;
    cursor.x += lineSize.width+15;
    cursor.y += initialSize.height - lineSize.height-130;

checkbox = [[UIButton alloc] initWithFrame:CGRectMake(cursor.x,cursor.y,15,15)];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"unchk.png"]forState:UIControlStateNormal];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateSelected];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateHighlighted];
    checkbox.adjustsImageWhenHighlighted=YES;
    [checkbox addTarget:self action:@selector(ChkUnChk) forControlEvents:UIControlEventTouchUpInside];
    [note addSubview:checkbox];
}

-(void)ChkUnChk
{
    if(checkUnCheck==NO)
    {
        [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateNormal];
        checkUnCheck=YES;
    }
    else if(checkUnCheck==YES)
    {
        [checkbox setBackgroundImage:[UIImage imageNamed:@"unchk.png"]forState:UIControlStateNormal];
        checkUnCheck=NO;
    }
}

-(void)checkboxSelected:(id)sender
{
    checkBoxSelected = !checkBoxSelected;
    [checkbox setSelected:checkBoxSelected];
}

ここに注意 --> UITextView、チェックボックス -->UIButton

4

4 に答える 4

7

取るNSMutableArray..

.h ファイル内

NSMutableArray *selectedBtnarr;

.m ファイルで

 - (void)viewDidLoad
   {
         selectedBtnarr=[NSMutableArray alloc]init];
   }

次に、UIButton のタグ プロパティを設定する必要があります。各ボタンには異なるタグがあります。

-(void)ChkUnChk:(id)sender
{

    UIButton *btn=(UIButton *)sender;
    NSString *Str=[NSString stringWithFormat:@"%d",btn.tag];
    BOOL flag=   [selectedBtnarr containsObject:Str];

    if (flag==YES)
    {
        [btn setBackgroundImage:[UIImage imageNamed:@"unchk.png"]    forState:UIControlStateNormal];
        [selectedBtnarr removeObject:Str];
    }
    else
    {
        [selectedBtnarr addObject:Str];
        [btn setBackgroundImage:[UIImage imageNamed:@"chk.png"] forState:UIControlStateNormal];
    }
}
于 2012-12-17T12:02:27.370 に答える
1

サンプルソースコードはこちら

https://github.com/ardalahmet/SSCheckBoxView

ここに画像の説明を入力

于 2012-12-17T12:07:39.650 に答える
1

任意の整数で作成されるボタンのタグを設定してみてください (ループを使用)。そして、セレクターを呼び出します-(void)ChkUnChk:(id)sender{}。したがって、メソッドはタグ付きボタンに対してのみ呼び出されます。

于 2012-12-17T11:57:55.617 に答える
0

以下の2つの方法を書き留めます。さまざまな状態に対してボタンのさまざまなメソッドを既に割り当てているため、これらの状態のみを変更し、ボタンの状態に従ってコードを実行する必要があります。

-(void)Check
{
    CGPoint origin = note.frame.origin;
    NSString* head = [note.text substringToIndex:note.selectedRange.location];
    CGSize initialSize = [head sizeWithFont:note.font constrainedToSize:note.contentSize];
    NSUInteger startOfLine = [head length];

    NSString* tail = [head substringFromIndex:startOfLine];
    CGSize lineSize = [tail sizeWithFont:note.font forWidth:note.contentSize.width lineBreakMode:UILineBreakModeWordWrap];
    CGPoint cursor = origin;
    cursor.x += lineSize.width+15;
    cursor.y += initialSize.height - lineSize.height-130;

    checkbox = [[UIButton alloc] initWithFrame:CGRectMake(cursor.x,cursor.y,15,15)];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"unchk.png"]forState:UIControlStateNormal];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateSelected];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateHighlighted];
    checkbox.adjustsImageWhenHighlighted=YES;
    [checkbox addTarget:self action:@selector(ChkUnChk) forControlEvents:UIControlEventTouchUpInside];
    [note addSubview:checkbox];
}

-(void)ChkUnChk:(id)sender
{
    UIButton *btn = sender;
    if(btn.selected==NO)
    {
        [btn setSelected:YES];
    }
    else if(btn.selected==YES)
    {
        [btn setSelected:NO];
    }
}

どこかで立ち往生した場合はお知らせください。

ありがとう。

于 2012-12-17T12:03:35.900 に答える