0

単純な問題があります。.m"[tableView reloadData]"のaから呼び出すことができません。UIButtonUITableViewCell

各行にを含むtableViewを示すがあります。セルのボタンをクリックすると、tableViewからデータをリロードしたいと思います。UITableViewCellUIButton

4

2 に答える 2

0

tableViewへの参照を保持している限り、ボタンを押すことでデータをリロードできるはずです。これを行う最も簡単な方法は、ヘッダーファイルで参照を作成することです。

@interface MyClass ... {
    UITableView *myTableView;
    // all your other stuff;
}
// any methods and properties you want to declare;
@end

次に、メソッドのセルにボタンを配置するときに- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath、次のようにします。

UIButton *myButton = [UIButton buttonWithType:whateverTypeYouPick];
[myButton addTarget:self action:@selector(reloadTableView) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:myButton];  // or cell.contentView or wherever you want to place it

次に、アクションメソッドを設定するだけです

- (IBAction)reloadTableView {
    [myTableView reloadData];
    // anything else you would like to do;
}

私はこれをテストしました、そしてそれは私にとってうまくいくので、うまくいけばそれはあなたのためにもトリックをするでしょう

于 2011-05-17T22:06:20.640 に答える
0

方法の1つは、セルにデリゲートを設定し、アクションが発生したときにtableViewControllerにデリゲートを実装させることです。

MyCell.h

@protocol MyCellDelegate

-(void)myCell:(MyCell*)cell reloadTableView:(id)sender;

@end

@interface MyCell : UITableViewCell

@property (nonatomic, weak) id <MyCellDelegate> delegate;

-(IBAction)reloadTableView:(id)sender;

@end

MyCell.m

@implementation MyCell

@property (nonatomic, weak) id <MyCellDelegate> delegate;

-(IBAction)reloadTableView:(id)sender;
{
    if(self.delegate)
    {
        [self.delegate myCell:self reloadTableView:sender];
    }
}

@end

tableViewControllerにデリゲートメソッドを実装し、実行するタスクを実行します。

-(void)myCell:(MyCell*)cell reloadTableView:(id)sender;
{
     CGPoint location = [sender locationInView:self.tableView];
     NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
    //Here is the indexPath
    [self.tableView reloadData];
}
于 2015-11-26T10:21:09.007 に答える