ลบสีไฮไลต์เซลล์ของ UITableView


110

ฉันต้องการลบสีฟ้าเริ่มต้นของการเลือกเซลล์ uitableview ฉันไม่ต้องการเลือกสีใด ๆ ที่นั่น ฉันยังไม่ได้สร้างคลาสเซลล์แบบกำหนดเอง ฉันกำลังปรับแต่งเซลล์โดยเพิ่มป้ายกำกับและปุ่มต่างๆ ฉันพยายามทำ:

cell.selectioncolor = [UIColor clearcolor];

แต่มันบอกว่าวิธีนี้เลิกใช้แล้ว

คำตอบ:


323
cell.selectionStyle = UITableViewCellSelectionStyleNone;

ในSwift 4อัปเดต

cell.selectionStyle = UITableViewCell.SelectionStyle.none

หรือ

cell.selectionStyle = .none

3
ฉันเก็บรหัสนั้นไว้ใน cellForRowAtIndexPath: นั่นเป็นสถานที่ที่แน่นอนที่จะเก็บหรือไม่
Pawriwes

9
@ ปาวริวส์ใช่เลย ถ้าจำไม่ผิดคุณสามารถตั้งค่าคุณสมบัตินั้นใน XIB ของเซลล์ได้หากคุณสร้างเซลล์โดยใช้ Interface Builder
Vladimir

4
ถ้าฉันทำเช่นนั้นเมื่อแก้ไขมันไม่ได้เลือกเซลล์ :(
AsifHabib

54

เลือกสิ่งนี้ในStoryboardหรือXIB


ใส่คำอธิบายภาพที่นี่


7
เพิ่มเติมคุณต้องตรวจสอบ "ตารางดูเซลล์ " หากคุณเปลี่ยนใน "มุมมองตาราง" มากกว่าที่คุณไม่ได้เลือกเซลล์
Kernelzero

2
@ พูลกิจว่าไม่จริง. สิ่งนี้จะปิดใช้งานสถานะการเลือกของเซลล์เท่านั้น สิ่งนี้ไม่เกี่ยวข้องกับข้อมูลที่แสดงอยู่หรือจัดการกับการโต้ตอบ ตรวจสอบให้แน่ใจว่าคุณมีชุดการลงทะเบียนที่เหมาะสมทั้งหมดและไม่ได้แทนที่ฟังก์ชันอื่น ๆ
Michael



6

วัตถุประสงค์ -C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

หรือ

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Swift 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

หากคุณต้องการเปลี่ยนโดยใช้ Storyboard / Xib เพียงแค่เลือกเซลล์ที่คุณต้องการลบ "เอฟเฟกต์สไตล์การเลือก" และกำหนดเป็น "ไม่มี" มันจะทำงานได้เหมือนเวทมนตร์เช่นกัน: D

สตอรี่บอร์ด / Xib


1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
Naval Hasan

5

การตั้งค่ารูปแบบการเลือก TableView .noneเป็นส่งผลต่อการตอบสนองและประสิทธิภาพของ Tableview ในแอปของฉัน (การdidSelectRowAt indexPathแตะเริ่มล่าช้า) วิธีแก้ปัญหาของฉันคือการซ่อนมุมมองพื้นหลังที่เลือกไว้awakeFromNib()เมื่อสร้างเซลล์ครั้งแรก:

selectedBackgroundView?.isHidden = true



2

ทำในเซลล์ :

class YourCell:  UITableViewCell {
    
    override func didMoveToSuperview() {
        selectionStyle = .none
    }

    ...
}

มันง่ายมาก


0

รวดเร็ว 5

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        cell.selectionStyle = .none

        return cell
    }  

0

คำตอบที่ถูกต้องควรเป็น:

cell.selectedBackgroundView?.backgroundColor = <choose your color>

ประเภทการเลือกเป็นคุณสมบัติอื่นที่เมื่อตั้งค่าให้.noneสร้างสิ่งที่คุณต้องการบวกผลข้างเคียงอื่น ๆ ที่ไม่ต้องการ

หากคุณไม่ต้องการให้เซลล์ถูกไฮไลต์ให้กำหนดสีของมุมมองพื้นหลังให้เหมือนกับเวลาที่ไม่ได้ไฮไลต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.