ฉันจะปิดการใช้งานตัวเลือก UITableView ได้อย่างไร


1192

เมื่อคุณแตะแถวในUITableViewแถวนั้นจะมีการเน้นและเลือก เป็นไปได้หรือไม่ที่จะปิดการใช้งานนี้เพื่อให้การแตะแถวไม่ทำอะไรเลย?


17
คำถามเดิมมีชื่อไม่ดี OP ต้องการการปิดใช้งานเป็นหลักselectionและแน่นอนว่าhighlightingจะถูกปิดการใช้งานด้วย สูงหลายคนได้รับการโหวตคำตอบอธิบายวิธีการและไม่ได้ปิดการใช้งานอยู่disable selection highlightingหากต้องการปิดใช้งานเฉพาะการเน้นการใช้งานcell.selectionStyle = .Noneหรือไปที่storyboard / cell / Selection = None
Andrej

โปรดอัปเดตชื่อหรือโพสต์ ฉันสับสน และจากคำถามนี้ฉันไม่รู้ว่าจะให้คำตอบอย่างไร
Daniel Springer

คำตอบ:


603

สำหรับฉันแล้วการทำงานต่อไปนี้ดี:

tableView.allowsSelection = false

ซึ่งหมายความว่าdidSelectRowAt#จะไม่ทำงาน กล่าวคือการแตะแถวของตารางจะไม่ทำอะไรเลย (และแน่นอนว่าจะไม่มีภาพเคลื่อนไหวที่เลือก)

(โปรดทราบว่าหากในเซลล์คุณมีUIButtonหรือตัวควบคุมอื่น ๆ แน่นอนว่าตัวควบคุมเหล่านั้นจะยังคงใช้งานได้การควบคุมใด ๆ ที่คุณเกิดขึ้นกับเซลล์ตารางนั้นไม่เกี่ยวข้องกับความสามารถของ UITableView ทั้งหมดในการอนุญาตให้คุณ "เลือกแถว" ใช้งานdidSelectRowAt#.)

อีกประเด็นที่ควรทราบคือ: สิ่งนี้ไม่ทำงานเมื่อUITableViewอยู่ในโหมดแก้ไข หากต้องการ จำกัด การเลือกเซลล์ในโหมดแก้ไขให้ใช้รหัสดังนี้:

tableView.allowsSelectionDuringEditing = false 

6
ในที่สุดมันก็ใช้งานได้สำหรับฉันฉันพยายามใช้ cell.selectionStyle = UITableViewCellSelectionStyleNone; แต่มันไม่ทำงาน สิ่งหนึ่งที่ควรทราบ: ควรเป็น: tableView.allowsSelection = NO; ไม่ผิด
tony.tc.leung

6
ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุด ปุ่มบนเซลล์ใช้งานได้ด้วยสิ่งนี้ แต่ข้อความไม่ทำงาน
Fahim Parkar

513
นี่เป็นคำตอบที่ได้รับการยอมรับและมีคะแนนโหวตมากน้อยเพียงใด? มันไม่ตอบคำถามเลย! คุณต้องตั้งค่าselectionStyleคุณสมบัติในเซลล์: cell.selectionStyle = UITableViewCellSelectionStyle.Noneใน Swift หรือcell.selectionStyle = UITableViewCellSelectionStyleNoneใน Objective-C
nodebase

5
สิ่งนี้ใช้ได้ผลกับฉันในเร็ว ๆ นี้ 2tableView.allowSelection = false
ขนาบ

15
มีสองสามวิธีในการทำสิ่งนี้ขึ้นอยู่กับสิ่งที่ต้องการ ไม่มีสไตล์การเลือกและไม่สามารถเลือกได้ทั้งสองอย่างหรือทั้งสองอย่างล้มเหลว นี่คือตัวอย่าง หากคุณต้องการเลือกเซลล์และtableViewDidSelectRowAtIndexPathต้องการที่จะเรียกว่าcell.selectionStyle = .Noneเป็นที่ต้องการ หากคุณไม่ต้องการหรือไม่สนใจฟังก์ชันของผู้รับมอบสิทธิ์ที่จะถูกเรียก (เช่นมีฟิลด์ข้อความในการตั้งค่า tableViewCell) tableView.allowsSelection = falseก็ถือว่าใช้ได้
Made2k

1963

สิ่งที่คุณต้องทำคือตั้งค่าสไตล์การเลือกบนUITableViewCellอินสแตนซ์โดยใช้:

Objective-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

หรือ

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

สวิฟท์ 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Swift 3 และ 4.x:

cell.selectionStyle = .none

เพิ่มเติมตรวจสอบให้แน่ใจว่าคุณไม่ได้ติดตั้ง-tableView:didSelectRowAtIndexPath:ในผู้รับมอบสิทธิ์มุมมองตารางหรือแยกเซลล์ที่คุณต้องการไม่มีการดำเนินการอย่างชัดเจนถ้าคุณใช้งาน

ข้อมูลเพิ่มเติมที่นี่และที่นี่


122
@Tony มันเป็นความคิดที่ดีถ้าคุณมี UITextField อยู่ในเซลล์
Aniruddh Joshi

73
@TonyMillion เป็นความคิดที่ไม่ดีเช่นกันหากคุณต้องการใช้ตัวควบคุมการแก้ไขในตัวเช่นการกวาดนิ้วเพื่อลบ หากคุณตั้งค่า userInteractionEnabled เป็น NO ปุ่มลบจะไม่ตอบสนองต่อเหตุการณ์ที่ผู้ใช้สัมผัส
Carlos P

47
สายไปยังเธรดนี้ แต่แทนที่จะเป็น userInteraction ให้ใช้ cell.allowsSelection นั่นจะหยุดวิธีการโต้ตอบของเซลล์ แต่ไม่ได้ปิดกั้นสิ่งตอบกลับ UIView ปกติ
คริส C

4
การตั้งค่า cell.userInteractionEnable = ไม่จะไม่หยุดการเรียกใช้ didSelectRowAtIndexPath
user4951

25
ฉันจะลงคะแนนคำตอบ แต่เพื่อให้ชัดเจน OP ขอเพียงเพื่อปิดการใช้งาน "เน้น" ไม่มีการปิดการใช้งานการโต้ตอบของเซลล์ทั้งหมดดังนั้นความคิดเห็นทั้งหมดนี้เป็น offtopic
Frederic Yesid PeñaSánchez

353

เนื่องจากเมื่อเร็ว ๆ นี้ฉันได้อ่านโพสต์นี้และได้ช่วยฉันฉันต้องการโพสต์คำตอบอื่นเพื่อรวมคำตอบทั้งหมด (สำหรับลูกหลาน)



ดังนั้นจึงมี 5 คำตอบที่แตกต่างกันขึ้นอยู่กับตรรกะและ / หรือผลลัพธ์ที่คุณต้องการ:

1. หากต้องการปิดใช้งานการไฮไลต์สีน้ำเงินโดยไม่เปลี่ยนการโต้ตอบอื่นของเซลล์:

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

ฉันใช้สิ่งนี้เมื่อฉันมี UIButton - หรือตัวควบคุมอื่น ๆ - โฮสต์อยู่ใน UITableViewCell และฉันต้องการให้ผู้ใช้สามารถโต้ตอบกับส่วนควบคุมได้ แต่ไม่ใช่เซลล์เอง

หมายเหตุ : tableView:didSelectRowAtIndexPath:ขณะที่โทนี่ล้านระบุไว้ข้างต้นนี้ไม่ได้ป้องกัน ฉันได้รับรอบนี้โดยง่าย "ถ้า" คำสั่งส่วนใหญ่มักจะทดสอบสำหรับส่วนและหลีกเลี่ยงการกระทำสำหรับส่วนเฉพาะ

อีกวิธีที่ฉันคิดว่าจะทดสอบการแตะเซลล์เช่นนี้คือ:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // A case was selected, so push into the CaseDetailViewController
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.selectionStyle != UITableViewCellSelectionStyleNone) {
        // Handle tap code here
    }
}



2. ในการทำเช่นนี้สำหรับทั้งตารางคุณสามารถใช้วิธีแก้ปัญหาข้างต้นกับแต่ละเซลล์ในตาราง แต่คุณสามารถทำได้เช่นกัน:

[tableView setAllowsSelection:NO];

ในการทดสอบของฉันนี้ยังช่วยให้การควบคุมภายในUITableViewCellเป็นแบบโต้ตอบ


3. ในการสร้างเซลล์ "อ่านอย่างเดียว" คุณสามารถทำสิ่งนี้ได้:

[cell setUserInteractionEnabled:NO];



4. เพื่อให้ทั้งตารางเป็น "อ่านอย่างเดียว"

[tableView setUserInteractionEnabled:NO];



5. ในการพิจารณาว่าจะไฮไลต์เซลล์หรือไม่ (ตามคำตอบนี้รวมถึงการเลือกโดยปริยาย) คุณสามารถใช้UITableViewDelegateวิธีโปรโตคอลต่อไปนี้:

- (BOOL)tableView:(UITableView *)tableView 
   shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath

3
หากคุณโหลดการออกแบบเซลล์จากปลายปากกากล่องกาเครื่องหมาย (ใน IB) จะทำงานได้ดีสำหรับ # 3 (และบนตารางสำหรับ # 4) สำหรับ # 4 กับ # 2 ความแตกต่างของการควบคุมภายในเซลล์จะเป็นแบบโต้ตอบหรือไม่?
lilbyrdie

4
ใช่. หากคุณต้องการปิดใช้งานการเลือก แต่อนุญาตให้ UIButtons ฯลฯ ... เพื่อดำเนินการต่อเพื่อรองรับการโต้ตอบกับผู้ใช้ให้ใช้ # 2 หากคุณต้องการเซลล์แบบอ่านอย่างเดียวให้ใช้ # 4 แน่นอนว่าทำไมคุณถึงมีทุกอย่างยกเว้น UIViews หรือ UILabels ในเซลล์ที่ไม่มีการโต้ตอบอยู่นอกเหนือฉัน บางทีบางคนอาจต้องการปิดการใช้งานการโต้ตอบทั้งหมดในขณะที่มีสิ่งอื่นเกิดขึ้น
mbm29414

8
# 4 เป็นความคิดที่น่ากลัวการทำเช่นนี้จะเป็นการปิดการใช้งานการเลื่อนในมุมมองตารางด้วย
simon

4
@simon ที่จริงแล้วมันไม่ได้เป็นความคิดที่น่ากลัว เป็นตัวเลือกหนึ่งที่อาจเป็นตัวเลือกที่ดีหรือไม่ขึ้นอยู่กับสถานการณ์ของคุณ นอกจากนี้ # 4 ปิดใช้งานการเลื่อน USER; คุณยังสามารถใช้งานของคุณเองได้หากจำเป็น ฉันเห็นด้วยที่ # 4 ไม่เป็นประโยชน์มาก แต่มันไม่ใช่ความคิดที่แย่มาก
mbm29414

3
เพื่อความสมบูรณ์คุณสามารถโปรดเพิ่มการตะโกนออกมาtableView:shouldHighlightRowAtIndexPath:ซึ่งโดยทั่วไป (ไม่เสมอไป) แนวทางที่ฉันต้องการ
Benjohn

82

เพื่อสรุปสิ่งที่ฉันเชื่อว่าเป็นคำตอบที่ถูกต้องตามประสบการณ์ของฉันในการดำเนินการนี้:

หากคุณต้องการปิดการใช้งานการเลือกเพียงบางส่วนของเซลล์ให้ใช้:

cell.userInteractionEnabled = NO;

เช่นเดียวกับการป้องกันการเลือกสิ่งนี้จะหยุด tableView: didSelectRowAtIndexPath: ถูกเรียกสำหรับเซลล์ที่ตั้งค่าไว้ (เครดิตไปถึง Tony ล้านสำหรับคำตอบนี้ขอบคุณ!)

หากคุณมีปุ่มในเซลล์ของคุณที่ต้องคลิกคุณจะต้อง:

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

และคุณต้องละเว้นการคลิกใด ๆ ในเซลล์- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPathด้วย

หากคุณต้องการปิดการใช้งานการเลือกสำหรับทั้งตารางใช้:

tableView.allowsSelection = NO;

(ขอเครดิตให้ Paulo De Barros ขอบคุณ!)


เกิดอะไรขึ้นถ้าเรามีปุ่มในเซลล์ของเรา?
Umair Afzal

56

ตั้งแต่ iOS 6.0 UITableViewDelegatetableView:shouldHighlightRowAtIndexPath:มี (อ่านเกี่ยวกับเรื่องนี้ในเอกสารประกอบ iOS )

วิธีนี้ช่วยให้คุณทำเครื่องหมายแถวที่เฉพาะเจาะจงว่าไม่ได้เป็นไฮไลท์ (และโดยปริยายไม่สามารถเลือกได้) โดยไม่ต้องเปลี่ยนรูปแบบการเลือกของเซลล์ยุ่งกับการจัดการกับเซลล์ของเหตุการณ์userInteractionEnabled = NOหรือเทคนิคอื่น ๆ ที่จัดทำไว้ที่นี่


2
สะดุดข้ามหัวข้อนี้และฉันก็ตกใจที่เห็นคำตอบอื่น ๆ มากมายก่อนหน้านี้ นี่คือวิธีที่เหมาะสมอย่างไม่ต้องสงสัย
beebcon

2
นี่เป็นคำตอบที่ถูกต้องและควรพิจารณาเท่านั้น สิ่งอื่นใดที่กล่าวถึง userInteraction นั้นไม่ถูกต้องสมบูรณ์
mattyohe

50

นอกจากนี้คุณยังสามารถปิดการใช้งานการเลือกแถวจากเครื่องมือสร้างอินเตอร์เฟสได้โดยเลือกNoSelectionจากselectionตัวเลือก (ของคุณสมบัติ UITableView) ในบานหน้าต่างตัวตรวจสอบตามที่แสดงในภาพด้านล่าง

ตัวตรวจสอบ UITableView


2
ทางออกที่ดีที่สุด IMHO
Itai Spector

ฉันมักจะใช้วิธีแก้ปัญหานี้
Evsenev


36

ในของคุณUITableViewCell's XIBในแอตทริบิวต์สารวัตรค่าชุดของการSelectionNone

ป้อนคำอธิบายรูปภาพที่นี่


นี่คือสิ่งที่ฉันต้องการ ฉันยังต้องการการแจ้งเตือน didSelect ... แต่ไม่มีตัวบ่งชี้ที่มองเห็นได้ชัดเจน ขอบคุณ!
ทิโมธีทริปป์

ดีใจที่มันช่วย! :)
Zaid Pathan

35

หากคุณต้องการให้ตัวเลือกเฉพาะแฟลชไม่อยู่ในสถานะที่เลือกคุณสามารถโทรเข้า

didSelectRowAtIndexPath

ต่อไปนี้

[tableView deselectRowAtIndexPath:indexPath animated:YES];

ดังนั้นมันจะกะพริบสถานะที่เลือกและเปลี่ยนกลับ


3
ด้วยวิธีนี้แถวจะไฮไลต์ทันทีและจางหายไปในช่วงครึ่งวินาที นี่คือวิธีที่ Apple จัดรูปแบบเมนูการตั้งค่าดังนั้นมันจึงดูดีสำหรับฉัน
VinceFior

34

ในกรณีที่ทุกคนต้องการคำตอบสำหรับSwift :

cell.selectionStyle = .None

1
นอกจากนี้เรายังสามารถใช้ cell.selectionStyle นี้ = UITableViewCellSelectionStyle.None
bably

29

นี่คือสิ่งที่ฉันใช้ในการcellForRowAtIndexPathเขียนรหัสนี้:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

28

จากUITableViewDelegateพิธีสารคุณสามารถใช้วิธีการwillSelectRowAtIndexPath และreturn nilถ้าคุณไม่ต้องการเลือกแถว

ในทำนองเดียวกันคุณสามารถใช้willDeselectRowAtIndexPathวิธีการและreturn nilหากคุณไม่ต้องการให้แถวยกเลิกการเลือก


5
ฉันไม่ชอบวิธีการนี้เพราะมันยังคงแสดงเซลล์ในสถานะที่ถูกไฮไลต์จนกระทั่งสัมผัส
kbanman

2
นั่นเป็นเหตุผลว่าทำไมฉันถึงชอบ :-)
Joris Weimar

24

1- สิ่งที่คุณต้องทำคือตั้งค่าสไตล์การเลือกในUITableViewCellอินสแตนซ์โดยใช้:


Objective-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

หรือ

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];


สวิฟท์ 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None


สวิฟท์ 3:

cell.selectionStyle = .none


2 - อย่านำไปใช้ - tableView:didSelectRowAtIndexPath:ในมุมมองตารางของคุณdelegateหรือยกเว้นเซลล์ที่คุณต้องการให้ไม่มีการดำเนินการหากคุณใช้งาน

3 - นอกจากนี้คุณยังสามารถทำได้จากกระดานเรื่องราว คลิกเซลล์มุมมองตารางและในตัวตรวจสอบแอตทริบิวต์ใต้เซลล์มุมมองตารางเปลี่ยนรายการแบบหล่นลงถัดจากส่วนที่เลือกเป็นไม่มี


4 - คุณสามารถปิดใช้งานการเน้นเซลล์ตารางโดยใช้รหัสด้านล่างใน (iOS) Xcode 9, Swift 4.0

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier: "OpenTbCell") as! OpenTbCell
        cell.selectionStyle = .none
        return cell


}

20

Objective-C:

  1. ด้านล่าง snippet ปิดการใช้งานเน้น didSelectRowAtIndexPathแต่ก็ยังปิดการใช้งานการเรียกร้องให้ ดังนั้นหากคุณไม่ได้ใช้งานให้didSelectRowAtIndexPathใช้วิธีการด้านล่าง ควรเพิ่มสิ่งนี้เมื่อคุณสร้างตาราง สิ่งนี้จะทำงานกับปุ่มและUITextFieldภายในเซลล์

    self.tableView.allowsSelection = NO;
  2. ด้านล่าง snippet didSelectRowAtIndexPathปิดการใช้งานไฮไลต์และก็ไม่ได้ปิดการใช้งานการเรียกร้องให้ ตั้งค่ารูปแบบการเลือกของเซลล์เป็นไม่มีในcellForRowAtIndexPath

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
  3. ตัวอย่างด้านล่างปิดใช้งานทุกอย่างในเซลล์ ซึ่งจะเป็นการปิดการปฏิสัมพันธ์กับbuttons, textfields:

    self.tableView.userInteractionEnabled = false;

สวิฟท์:

ด้านล่างนี้Swiftเทียบเท่าObjective-Cโซลูชันข้างต้น:

  1. การเปลี่ยนโซลูชันแรก

    self.tableView.allowsSelection = false
  2. การทดแทนโซลูชันที่สอง

    cell?.selectionStyle = UITableViewCellSelectionStyle.None
  3. การเปลี่ยนโซลูชันที่สาม

    self.tableView.userInteractionEnabled = false

19

ลองพิมพ์:

cell.selected = NO;

มันจะยกเลิกการเลือกแถวของคุณเมื่อจำเป็น

ใน Swift3 ...

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let r = indexPath.row
    print("clicked .. \(r)")
    tableView.cellForRow(at: indexPath)?.setSelected(false, animated: true)
}

14

ฉันได้ต่อสู้กับสิ่งนี้อย่างล้นเหลือด้วยการควบคุมUITableViewCellห้ามใช้userInteractionEnabledทรัพย์สินของฉัน ฉันมีตารางคงที่ 3 เซลล์สำหรับการตั้งค่า 2 กับวันที่ 1 พร้อมสวิตช์เปิด / ปิด หลังจากเล่นเกี่ยวกับใน Storyboard / IB ฉันได้พยายามทำให้เลือกไม่ได้ แต่เมื่อคุณแตะมันการเลือกจากแถวบนสุดแถวใดแถวหนึ่งจะหายไป นี่คือภาพ WIP ของการตั้งค่าของฉัน UITableView:

การตั้งค่า UITableView

หากคุณแตะแถวที่ 3 ไม่มีอะไรเกิดขึ้นการเลือกจะยังคงอยู่ในแถวที่สอง ฟังก์ชั่นนี้เป็นสำเนาของหน้าจอการเลือกเวลาเพิ่มแอปของปฏิทินแอปเปิ้ล

รหัสนี้เข้ากันได้อย่างน่าประหลาดใจจนถึง IOS2 = /:

- (NSIndexPath *)tableView: (UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 2) {
        return nil;
    }
    return indexPath;
}

สิ่งนี้ทำงานร่วมกับการตั้งค่ารูปแบบการเลือกเป็น none ดังนั้นเซลล์จึงไม่สั่นเมื่อสัมผัสเหตุการณ์


11

เราสามารถเขียนโค้ดเช่น

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

แต่เมื่อเรามีเซลล์ xib ที่กำหนดเองด้านบนบรรทัดให้เตือนในเวลานั้น

กำหนดเซลล์ xib

เราจำเป็นต้องตั้งค่าสไตล์การเลือกไม่มีจากเครื่องมือสร้างอินเตอร์เฟส


11

คุณเพียงแค่ใส่รหัสนี้ลงใน cellForRowAtIndexPath

วิธีปิดใช้งานคุณสมบัติการเลือกของเซลล์: (ขณะที่แตะเซลล์)

cell.selectionStyle = UITableViewCellSelectionStyle.None

ขอบคุณฉันมีภาพในเซลล์ของฉันและมีป้ายกำกับอยู่ด้านบน ฉันได้ตั้งค่าพื้นหลังป้ายกำกับ แต่ทุกครั้งที่ฉันคลิกพื้นหลังจะหายไปสิ่งนี้ได้แก้ไขแล้ว
Darko

10

ลองนี้

cell.selectionStyle = UITableViewCellSelectionStyleNone;

และ

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

และคุณยังสามารถตั้งค่ารูปแบบการเลือกโดยใช้ interfacebuilder



7

ขณะนี้เป็นทางออกที่ดีที่สุดและง่ายที่สุดในการป้องกันไม่ให้แถวแสดงไฮไลต์ระหว่างการเลือก

cell.selectionStyle = UITableViewCellSelectionStyleNone;

ฉันขอแนะนำด้วยว่าบางครั้งมันมีประโยชน์ในการแสดงสั้น ๆ ว่าแถวถูกเลือกแล้วปิด นี่เป็นการเตือนผู้ใช้พร้อมยืนยันสิ่งที่พวกเขาตั้งใจจะเลือก:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     [tableView deselectRowAtIndexPath:indexPath animated:NO];
...
}


6

เพื่อปิดใช้งานการไฮไลต์ของ UItableviewcell

cell.selectionStyle = UITableViewCellSelectionStyleNone;

และไม่ควรอนุญาตให้ผู้ใช้โต้ตอบกับเซลล์

cell.userInteractionEnabled = NO;

6

คุณสามารถตั้งค่าสีพื้นหลังเป็น Clear เพื่อให้ได้เอฟเฟกต์เดียวกันกับUITableViewCellSelectionStyleNoneในกรณีที่คุณไม่ต้องการ / ไม่สามารถใช้UITableViewCellSelectionStyleNoneไม่สามารถใช้

คุณจะใช้รหัสดังนี้:

UIView *backgroundColorView = [[UIView alloc] init];
backgroundColorView.backgroundColor = [UIColor clearColor];
backgroundColorView.layer.masksToBounds = YES;
[cell setSelectedBackgroundView: backgroundColorView];

สิ่งนี้อาจลดประสิทธิภาพของคุณเมื่อเพิ่มมุมมองสีพิเศษให้กับแต่ละเซลล์


6

คุณสามารถใช้ได้ :

cell.selectionStyle = UITableViewCellSelectionStyleNone;

ในเซลล์สำหรับแถวที่วิธีดัชนีพา ธ ของ UITableView ของคุณ

นอกจากนี้คุณสามารถใช้:

[tableView deselectRowAtIndexPath:indexPath animated:NO];

ในวิธีดู didselectrowatindexpath


ตอนนี้cell.selectionStyle = UITableViewCellSelectionStyle.noneอยู่ใน Swift 3
Dan




5
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:NO];
[cell setHighlighted:NO animated:NO];

การเข้ารหัสมีความสุข !!!


5

คุณสามารถทำได้จากกระดานเรื่องราว คลิกเซลล์มุมมองตารางและในตัวตรวจสอบแอตทริบิวต์ใต้เซลล์มุมมองตารางเปลี่ยนรายการแบบหล่นลงถัดจากส่วนที่เลือกเป็นไม่มี

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