0

を介してセルにボタンが接続されている がありUITableViewControllerます。これらのボタンは、ユーザーがクリックしたときに表示されます。自体は、複数のパラメーターを含むオブジェクトので構成されており、"name" パラメーターがテーブルに表示されています。UITableViewaccessoryViewselected/deselectedtableNSMutableArrayNSString

私が今やろうとしているのは、ボタンが選択されたときに、対応するOBJECTそのリンクをそれぞれの"name"パラメーターに追加することNSMutableArrayです。ユーザーはセルを選択しているのではなく、セルに関連付けられているボタンをクリックしています。

ここに私の方法がselects/deselectsありbuttonますcell

-(void)buttonTouched:(id)sender
{
    UIButton *btn = (UIButton *)sender;

    if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"CheckBox1.png"]])
    {
        [btn setImage:[UIImage imageNamed:@"CheckBox2.png"] forState:UIControlStateNormal];
        // statement to add object to NSMutableArray
    }
    else
    {
        [btn setImage:[UIImage imageNamed:@"CheckBox1.png"] forState:UIControlStateNormal];
        // statement to remove object from NSMutableArray
    }

}


//Here is my code that shows how I initialize my button and cell in my UITableView

- (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;

        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(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
        [testButton setTag:cell.tag];
        [cell setAccessoryView:testButton];
        //[cell setAccessoryType:UITableViewCellAccessoryCheckmark];

    }

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

    return cell;

}

私の問題は、オブジェクトを配列に実際に追加することではなく、ボタンからそれぞれのセルを導出し、そのセルから正しいオブジェクトを導出することです。

4

4 に答える 4

0

私が過去に行ったことの1つは、ボタンのタグをセルの行に設定することです。これは、次の場合にのみ機能します。

  • テーブルにはセクションが1つしかありません
  • 常にボタンのタグを設定しますtableView:cellForRowAtIndexPath:(デキューのため)
  • テーブルは読み取り専用です(つまり、セルの削除または移動を許可しません)

より複雑なテーブルの場合、ボタンからオブジェクトへのマッピングが必要になる可能性があります。

于 2013-01-08T19:59:50.900 に答える
0

たぶん、を使用する代わりに、を使用NSMutableArrayNSMutableDictionaryて新しいアイテムにキーを割り当て、より簡単に注文できるようにすることができます。

于 2013-01-08T20:00:32.613 に答える
0

各ボタンに view.tag を追加できます。たとえば、最初のボタンに 101 を割り当て、2 番目のボタンに 102 を割り当てます。

このタグは、詳細情報を見つける配列内の位置に対応します。

于 2013-01-08T19:58:35.060 に答える
0

このようにセルをボタンにリンクする方法が必要です。いくつかのオプションがあります

1-ボタンのタグを配列内の要素の対応するインデックスに設定します。これにより、タグプロパティを介してセルを取得できます。ボタンを更新する必要があるため、セルを削除する場合に問題が発生する可能性がありますタグ。

2-辞書を使用してボタンをセルにマップします

したがって、タグを使用してインデックスをマークする場合は、 UITableViewCell の cellForRowAtIndexPath を使用して cell を取得できます。データ オブジェクトは、そのインデックスでも datasource 配列にある必要があります.. Daniel

于 2013-01-08T19:58:53.577 に答える