1

私はUITableViewControllerこのようなものを持っています。UIBarButtonItem各行の accessoriesView に があるグループ化されたテーブル ビュー。

ここに画像の説明を入力

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    UIToolbar *toolBar = [[TransparentToolbar alloc] init];
    UIBarButtonItem *loginButton = [[UIBarButtonItem alloc] initWithTitle:@"Check"
                                                                    style:UIBarButtonItemStyleBordered
                                                                   target:self
                                                                   action:@selector(login:)];
    toolBar.frame = CGRectMake(0, 0, 100, 103);
    toolBar.items = @[loginButton];
    cell.accessoryView = toolBar;

    return cell;
}

UITableViewCell今、対応する をクリックしたときのインデックスパスを取得しようとしていますUIBarButtonItem。(ソース

- (void)login:(UIBarButtonItem *)button
{
    UIBarButtonItem *barButton = button;
    UIView *view = [barButton valueForKey:@"view"];
    UITableViewCell *cell = (UITableViewCell *)view.superview;
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    NSLog(@"secton: %d", indexPath.section);
}

しかし、どのバーボタンをクリックしても 0 しか返されません。誰でも何が問題なのか、これを修正する方法を教えてもらえますか? 本当にありがたいです。

ありがとうございました。

4

5 に答える 5

2

このようにloginuttonタグを設定します

loginButton.tag=indexPath.section;

クリックイベントでインデックスパスを取得

- (void)login:(UIBarButtonItem *)button
{
UITableViewCell *cell= [tableView cellForRowAtIndexPath:button.tag];
}
于 2013-08-06T06:51:55.137 に答える
1

cellForRowAtIndexPath

[loginButton setTag:indexPath.section];

ログイン:

   NSLog(@"secton: %d",(long int) [barButton tag]);
于 2013-08-06T06:51:51.263 に答える
1

CellForRow:--

loginButton.tag=indexPath.row;

ログイン アクション メソッド:--

 NSIndexPath *indexPath=[NSIndexPath indexPathForItem:button.tag inSection:0];
于 2013-08-06T06:55:58.667 に答える
-1

各セルの各バーボタン項目に異なるタグを設定します。次に、ボタンタグに従って、それがどのセルであるかを見つけることができます。このようにアクセスできます

UITableViewCell *cell= [tableView cellForRowAtIndexPath:indexPath];
于 2013-08-06T06:48:07.810 に答える