0

ボタンを追加したいセルのテーブルを含むUITableViewControllerがあります。これは、チェックボックスとして機能するカスタマイズされたボタンであり、通常の状態の画像と、ユーザーが選択したときに表示される別の画像が含まれます。残念ながら、画像を押すたびに画像の状態が変化することはなく、何らかの理由で、ターゲットメソッドも呼び出されていません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    // Configure the cell...
    TestObject *tObject = [myNSMutableArray objectAtIndex:indexPath.row];
    cell.textLabel.text = tObject.testTitle;

    testButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [testButton setFrame:CGRectMake(280, 57, 25, 25)];
    [testButton setImage:[UIImage imageNamed:@"CheckBox1.png"] forState:UIControlStateSelected];
    [testButton setImage:[UIImage imageNamed:@"CheckBox2.png"] forState:UIControlStateNormal];
    [testButton setUserInteractionEnabled:YES];
    [testButton addTarget:self action:@selector(clickOnCheckButton:) forControlEvents:UIControlEventTouchUpInside];

    [cell addSubview:testButton];

    return cell;

}

記録のために、私は確かにメソッドを実装しました:

-(void)clickOnCheckButton:(id)sender {

    NSLog(@"button has been pressed");
}

スペルが正しいことを確認しました。そのため、各セルのボタンが押されたときにメソッドが呼び出されない理由がわかりません。

テーブル出力のもう1つの問題は、最初のセルの中にボタンがないことです。ただし、その下にある他のすべてのセルはそうです。

誰かが私が間違っていることを見ることができますか?

返信してくださった皆様、ありがとうございました。

4

2 に答える 2

0

セルのaccessoryViewプロパティを使用する場合は、ボタンのようなカスタムビューに設定でき、ボタンのように機能するように設計されています。UITableViewDelegate次に、メソッド– tableView:accessoryButtonTappedForRowWithIndexPath:を使用してアクションを制御するオプションがあります。

于 2013-01-08T05:22:01.833 に答える
0

あなたは私たちのプロジェクトで流れるコードを書いています

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


    ObjectiveCcustTcell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
   ObjctiveString *temp=[_arraymain objectAtIndex:indexPath.row];


    cell.labQutionNo.text=temp.qutNO;
    cell.labQution.text=temp.qution;
    cell.labAns.text=temp.ans;
    cell.labAns2.text=temp.ans2;
    cell.labAns3.text=temp.ans3;

[cell.ButAns1 setBackgroundImage:[UIImage imageNamed:temp.ansD1] forState:UIControlStateNormal];
[cell.ButAns2 setBackgroundImage:[UIImage imageNamed:temp.ansD2] forState:UIControlStateNormal];
[cell.ButAns3 setBackgroundImage:[UIImage imageNamed:temp.ansD3] forState:UIControlStateNormal];

     if(indexPath.row==0&&t==1)
        {
             [cell.ButAns1 setBackgroundImage:[UIImage imageNamed:@"select"] forState:UIControlStateNormal];
        }

    if(indexPath.row==1&&t==3)
            {

             [cell.ButAns1 setBackgroundImage:[UIImage imageNamed:@"select"] forState:UIControlStateNormal];
            }



    [cell.ButAns1 addTarget:self action:@selector(MEthodBut:)forControlEvents:UIControlEventTouchUpInside];
    [cell.ButAns2 addTarget:self action:@selector(MEthodBut2:) forControlEvents:UIControlEventTouchUpInside];
     [cell.ButAns3 addTarget:self action:@selector(MEthodBut3:) forControlEvents:UIControlEventTouchUpInside];

     [cell.ButAns1 setTag:indexPath.row];
     [cell.ButAns2 setTag:indexPath.row];
    [cell.ButAns3 setTag:indexPath.row];

    return cell;



}


-(void)MEthodBut:(UIButton *)sender
{

    UIButton *button = (UIButton *)sender;
    int row = (int)button.tag;





    if(row==0)
    {

        t=1;

[_tablemain reload];

    }
}
于 2016-10-05T04:22:48.420 に答える