我的代码如下
viewcontroller.m
- (void)viewDidLoad {
[super viewDidLoad];
UITableView *tableView = [[UITableView alloc] init];
tableView.delegate = self;
tableView.dataSource = self;
[tableView registerClass:[TableViewCell class] forCellReuseIdentifier:@"cell"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.textLabel.text = @"Hello, world";
cell.delegate = self;
return cell;
}
cell.m
- (void)awakeFromNib {
[super awakeFromNib];
[self commonInit];
// Initialization code
}
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self commonInit];
}
return self;
}
- (void)commonInit
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress)];
[self addGestureRecognizer:longPress];
}
- (void)longPress
{
[self.delegate actionTriggered:self];
}
因此屏幕显示一个只有一个单元格包含“ hello world”的表格视图 长按手势时什么也没发生。
所以我在commonInit中设置了一个断点。 找出这个方法没有被调用。 不知道为什么。以及如何解决。 感谢任何帮助。
答案 0 :(得分:0)
在“ viewDidLoad”中,创建一个局部变量“ tableView”。该方法完成后,该变量将超出范围。
这行不通。
假设viewcontroller.m文件中的类是从UITableViewController继承的,则只需确保配置现有的tableView属性而不是创建局部变量即可。
-(void)viewDidLoad {
[super viewDidLoad];
// UITableView *tableView = [[UITableView alloc] init]; <-- Don't!
tableView.delegate = self;
tableView.dataSource = self;
[tableView registerClass:[TableViewCell class] forCellReuseIdentifier:@"cell"];
}