簡體   English   中英

自定義UITableViewCell重用突出顯示問題

[英]custom UITableViewCell reuse highlight issue

在我正在進行的項目中,已經有一個自定義UITableViewCell,並且我確定問題出在單元的重用中。

這兩種方法正在覆蓋突出顯示和選擇:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {

    [super setHighlighted:highlighted animated:animated];

    if (self.isCellEditing == NO) {
        if (highlighted) {
            self.customView.backgroundColor = [UIColor redColor];
        } else {
            self.customView.backgroundColor = [UIColor whiteColor];
        }
    }
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

    [super setSelected:selected animated:animated];

    if (self.isCellEditing == NO) {
        if (selected) {
            self.customView.backgroundColor = [UIColor redColor];
        } else {
            self.customView.backgroundColor = [UIColor whiteColor];
        }
    } else {
        if (selected) {
            self.editImageView.image = self.editAccessorySelectedImage;
        } else {
            self.editImageView.image = self.editAccessoryImage;
        }
    }
}

應用中發生問題的原因是,我需要自動滾動並選擇上一個選定的單元格,然后應用在應用啟動時關閉(在viewDidAppear中完成)。 這行之有效,除了突出顯示該單元格外,實際上它會滾動到選中它的單元格,如它在詳細信息視圖(iPad splitview設置)中所示,但該單元格不會突出顯示。 這是一個重用問題,因為如果需要滾動到的單元格是加載時可見的第一個單元格之一,它將突出顯示,但是如果它不在屏幕上並滾動到該單元格,它將選擇但不突出顯示它。

ETA:單元重用覆蓋:

- (void)prepareForReuse {

[super prepareForReuse];

self.selectionStyle = UITableViewCellSelectionStyleNone;
_cellEditing = NO;
_swipingToDelete = NO;
_editViewAnimated = NO;
}

如果其他人想要自定義突出顯示和選定狀態,則解決方法是:

if (highlighted || self.isSelected)

這將迫使它跳到if塊中,因為當您選擇它時,您希望它是突出顯示和選定狀態的顏色(假設它們是相同的顏色)

暫無
暫無

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

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