0

このように構造が見えます。

--- UIView
   ---- ScrollView
       --- TableView

UIView *topView = [[UIView alloc]initWithFrame:CGRectMake(0, -250, 320, 250)];

UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 70, 320, 150) style:UITableViewStylePlain];
    tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
    tableView.delegate = self;
    tableView.dataSource = self;
    tableView.backgroundColor = [UIColor blackColor];
    tableView.separatorStyle = normal;
    [tableView reloadData];

    [topView addSubview:tableView];

    [self.scrollView addSubview:topView];

テーブルビューでは、ボタンのあるカスタムテーブルビューセルを使用しています。これが私のCellForRowAtIndexのボタンのコードです

[cell.btnDelete addTarget:self action:@selector(deleteAppointment:) forControlEvents:UIControlEventTouchUpInside];

特定の行を取得するために、deleteAppointmentでこれを実行します

 UIButton *button = (UIButton *)sender;
    UITableViewCell *cell = (UITableViewCell *)button.superview;
    UITableView *tableView = (UITableView *)cell.superview;
    NSIndexPath *indexPath = [tableView indexPathForCell:cell];
    NSLog(@"row: %d",indexPath.row);

しかし、それでも次のエラーが発生します。

-[ExceptionCell indexPathForCell:]: unrecognized selector sent to instance 0x210a2fa0

誰か助けてもらえますか?

4

3 に答える 3

6

で、本当にシンプルcellForRowAtIndexPathです。のようにボタンにタグを付けるだけです

cell.button.tag = indexPath.row;

ボタンの@selectorメソッドで配列または辞書(dataSource)から値を削除します

[array removeObjectAtIndex:button.tag];

次に、tableView をリロードします。

[tableView reloadData];
于 2012-12-04T14:06:02.723 に答える
0

エラーは、を呼び出そうとしていることを示していindexPathForCellますExceptionCellindexPathForCellのメソッドでUITableViewあり、ではありませんUITableViewCell

cell.superviewあなたが期待するようにあなたを返していませんUITableView

于 2012-12-04T13:59:51.563 に答える