単純な問題があります。.m"[tableView reloadData]"のaから呼び出すことができません。UIButtonUITableViewCell
各行にを含むtableViewを示すがあります。セルのボタンをクリックすると、tableViewからデータをリロードしたいと思います。UITableViewCellUIButton
単純な問題があります。.m"[tableView reloadData]"のaから呼び出すことができません。UIButtonUITableViewCell
各行にを含むtableViewを示すがあります。セルのボタンをクリックすると、tableViewからデータをリロードしたいと思います。UITableViewCellUIButton
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;
}
私はこれをテストしました、そしてそれは私にとってうまくいくので、うまくいけばそれはあなたのためにもトリックをするでしょう
方法の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];
}