Tôi đang gặp sự cố với các ô xem bảng không giữ trạng thái "đã chọn" khi cuộn bảng. Đây là mã có liên quan:UITableView ô đã chọn không được chọn khi cuộn
@property (nonatomic, strong) NSIndexPath *selectedIndexPath;
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.selectedIndexPath = indexPath;
//do other stuff
}
-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCustomCell_iPhone* cell = [tableView dequeueReusableCellWithIdentifier:@"MyCustomCell_iPhone"];
if (cell == nil)
cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell_iPhone" owner:self options:nil] objectAtIndex:0];
if ([indexPath compare: self.selectedIndexPath] == NSOrderedSame) {
[cell setSelected:YES animated:NO];
}
return cell;
}
Và đối với các tế bào:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
if (selected) {
self.selectedBg.hidden = NO;
}else{
self.selectedBg.hidden = YES;
}
}
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
[super setHighlighted:highlighted animated:animated];
if (highlighted) {
self.selectedBg.hidden = NO;
}else{
self.selectedBg.hidden = YES;
}
}
Làm thế nào tôi có thể nhận được các ô đã chọn để duy trì nhấn mạnh? Nếu tôi di chuyển nó ra khỏi màn hình, khi nó cuộn trở lại trên màn hình nó xuất hiện trong trạng thái không được chọn của nó (với lựa chọn của nóBg ẩn).
CHỈNH SỬA: Xóa tập hợp Phương pháp được đánh dấu sáng khỏi ô sẽ khắc phục sự cố. Tuy nhiên điều đó có nghĩa là tôi không nhận được trạng thái được đánh dấu khi nhấn vào ô bảng. Tôi muốn biết giải pháp này.
Tuyệt vời! Giải pháp này làm việc tốt cho tôi. Nhưng tôi đã tìm thấy sự cố khi hàng được chọn được chọn lại. Sau đó, nó được bỏ chọn. Tôi đã thêm phương pháp này UITableView đại biểu để giải quyết vấn đề này: - (NSIndexPath *) tableView: (UITableView *) tableView willDeselectRowAtIndexPath: (NSIndexPath *) indexPath { UITableViewCell * cell = [tableView cellForRowAtIndexPath: indexPath]; nếu ([ô được chọn]] { trả về số không; } return indexPath; } – mlabraca