簡體   English   中英

-didSelectRowAtIndexPath:不在UITableView中調用

[英]-didSelectRowAtIndexPath: not being called in UITableView

當我單擊UITableViewCell時,它具有選擇效果(單擊的單元格中為灰色背景),但是didSelectRowAtIndexPath沒有調用,會發生什么情況?

編輯

這是我的代碼

tableView.h文件

@interface PopCardView : MMPopupView <UITableViewDataSource, UITableViewDelegate>

@end

tableView.m文件

@property (nonatomic, strong) NSMutableArray *tagsArray;
@property (nonatomic, strong) UIView         *backView;
@property (nonatomic, strong) UITableView    *tableView;
@property (nonatomic, assign) NSUInteger     lastIndex;

@end

-(id)initWithTags:(NSMutableArray *)tags{
    self = [super init];

if (self) {
  self.backView = [[UIView alloc] init];
  self.backView.backgroundColor = [UIColor whiteColor];
  self.backView.layer.cornerRadius = 5;
  self.backView.layer.masksToBounds = YES;

  [self addSubview:self.backView];

  [self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
      make.left.top.bottom.right.equalTo(self);
  }];

  _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 324, 300) style:UITableViewStylePlain];
  _tableView.tableFooterView =[[UIView alloc] init];
  [self.backView addSubview:_tableView];
  [_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
     make.left.top.right.bottom.equalTo(self.backView).insets(UIEdgeInsetsMake(45,0, 45, 15));
     make.size.mas_equalTo(CGSizeMake(324, 200));
  }];

  [_tableView registerClass:[PopCardTagViewCell class] forCellReuseIdentifier:@"cell"];

  _tableView.allowsSelection = YES;
  _tableView.allowsSelectionDuringEditing = YES;
  [_tableView setUserInteractionEnabled:YES];


  _tableView.dataSource = self;
  _tableView.delegate = self;

  }
  return self;

}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [_tagsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        PopCardData *data = (PopCardData *)obj;
        data.selected = @"0";
        if (idx == indexPath.row) {
            data.selected = @"1";
        }
    }];
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
}




-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *identifer = @"cell";
    PopCardTagViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:identifer];
    if (!cell) {
        cell = [[PopCardTagViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifer];
    }
    [self configureCell:cell forIndexPath:indexPath];
    return cell;
}

-(void)configureCell:(PopCardTagViewCell *)cell forIndexPath:(NSIndexPath *)indexPath {
    PopCardData *data = (PopCardData *)[_tagsArray objectAtIndex:indexPath.row];
    //configure cell
    [cell setUserInteractionEnabled:YES];

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return _tagsArray.count;
}

編輯2

這是我的PopCardView的初始化代碼,它使用swift

let pop = PopCardView(tags: self.m_model.getItmes())
pop.show()

您顯示的代碼不會為表視圖設置任何委托。 這是原因,或者您發布的代碼段不完整。

self.tableView.delegate = self;

並將UITableViewDelegate添加到您的界面,例如

@interface ClassName ()<UITableViewDelegate>

確保單元中沒有任何東西可以吞噬觸摸事件。 諸如按鈕和文本字段之類的事情都可能導致這種情況。 從您的牢房中剝離所有東西,進行測試以查看其是否起作用,然后將它們緩慢地添加回去,以找到罪魁禍首。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM