UITableView สีตัวคั่นตำแหน่งที่จะตั้ง


162

ฉันได้เพิ่มUITableViewใน IB และตั้ง "ผู้รับมอบสิทธิ์" และ "แหล่งข้อมูล" และทั้งหมดทำงานได้ดี สิ่งที่ฉันต้องการทำต่อไปคือเปลี่ยนสีของตัวแยก แต่วิธีเดียวที่ฉันสามารถทำได้คือการเพิ่มวิธีการในการเรียกกลับผู้รับมอบสิทธิ์อย่างใดอย่างหนึ่งมีสถานที่ที่ดีกว่าที่ฉันควรจะใส่นี้?

ฉันไม่มีสิ่งนี้ในขณะนี้ แต่ฉันคิดว่าฉันอาจต้องเพิ่ม "iVar" จากคอนโทรลเลอร์ของฉันที่ฉันสามารถเชื่อมโยงไปยัง UITableView IB ได้จากนั้นตั้งค่าตัวคั่นสีในviewDidload?

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView setSeparatorColor:[UIColor blackColor]];
    return 65;
}

การเพิ่มตัวแปรและเชื่อมโยงมันเข้ากับ IB เป็นวิธีที่ฉันทำไว้ตลอดเวลา
s1mm0t

นั่นคือสิ่งที่ฉันคิด ฉันทำกวดวิชาที่พวกเขาไม่ได้ใช้และ iVar พวกเขาเพียงแค่อาศัยการมอบหมายและการเรียกกลับแหล่งข้อมูล อย่างไรก็ตามพวกเขาไม่เคยเข้าถึงสีตัวคั่นดังนั้นอาจเป็นเหตุผล
fuzzygoat

คำตอบ:


335
- (void)viewDidLoad
{
   [self.tableView setSeparatorColor:[UIColor myColor]];
}

ฉันหวังว่าจะช่วยได้ - คุณจะต้องself.เข้าถึงได้โปรดจำไว้

สวิฟท์ 4.2

tableView.separatorColor = UIColor.red

สวัสดี Helen เข้าถึงได้โดยไม่จำเป็นต้องเพิ่ม @property ดูเหมือนหรือไม่
fuzzygoat

1
นี่เป็นเรื่องจริง คุณกำลังคลาสย่อย UITableViewController ซึ่งประกาศว่าเป็นคุณสมบัติ มันจึงสืบทอดเมธอด accessor / setter ของซูเปอร์คลาสดังนั้นคุณสามารถตั้งค่าได้ตามลำดับ อย่างไรก็ตามคุณไม่สามารถเข้าถึงตัวแปรอินสแตนซ์โดยตรง (อาจเป็นเรื่องที่ดี) เหตุผลที่คุณสามารถตั้งค่าในวิธีการมอบหมายได้เนื่องจากเป็นพารามิเตอร์ของวิธีการที่เรียกว่า
เฮเลน

2
หรือถ้าคุณชอบ: self.tableView.separatorColor = UIColor.clearColor;
bbrame

2
ไม่ได้เป็นส่วนหนึ่งของคำตอบโดยเฉพาะ แต่การเพิ่ม[super viewDidLoad];ข้อมูลโค้ดน่าจะดี
โทโทแคสเตอร์

57

ตอนนี้คุณน่าจะสามารถทำได้โดยตรงใน IB

ไม่แน่ใจว่าจะใช้งานได้เมื่อมีการโพสต์คำถามตั้งแต่แรก

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


24

เวอร์ชั่นของSwift :

override func viewDidLoad() {
    super.viewDidLoad()

    // Assign your color to this property, for example here we assign the red color.
    tableView.separatorColor = UIColor.redColor()
}

1
นี่แสดงให้ฉันเห็นข้อผิดพลาด'separatorColor' is unavailableบน tvOS
Banana

12

ลอง+ (อินสแตนซ์ประเภท) การปรากฏตัวของ UITableView:

Objective-C:

[[UITableView appearance] setSeparatorColor:[UIColor blackColor]]; // set your desired colour in place of "[UIColor blackColor]"

สวิฟท์ 3.0:

UITableView.appearance().separatorColor = UIColor.black // set your desired colour in place of "UIColor.black"

หมายเหตุ: การเปลี่ยนแปลงจะสะท้อนถึงตารางทั้งหมดที่ใช้ในแอปพลิเคชัน


3

หากคุณต้องการตั้งค่าสีเดียวกันให้กับตัวคั่นทุกตัวและเป็นสีขาวขุ่นคุณสามารถใช้:

 self.tableView.separatorColor = UIColor.redColor()

หากคุณต้องการใช้สีที่แตกต่างสำหรับตัวคั่นหรือล้างสีตัวคั่นหรือใช้สีที่มีอัลฟา

ระวัง: คุณต้องรู้ว่ามี backgroundView ในตัวแยกที่มีสีเริ่มต้น

หากต้องการเปลี่ยนคุณสามารถใช้ฟังก์ชั่นนี้:

    func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        if(view.isKindOfClass(UITableViewHeaderFooterView)){
            var headerView = view as! UITableViewHeaderFooterView;
            headerView.backgroundView?.backgroundColor = myColor

           //Other colors you can change here
           // headerView.backgroundColor = myColor
           // headerView.contentView.backgroundColor = myColor
        }
    }

    func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) {
        if(view.isKindOfClass(UITableViewHeaderFooterView)){
            var footerView = view as! UITableViewHeaderFooterView;
            footerView.backgroundView?.backgroundColor = myColor
           //Other colors you can change here
           //footerView.backgroundColor = myColor
           //footerView.contentView.backgroundColor = myColor
        }
    }

หวังว่ามันจะช่วย!


1
นี่แสดงให้ฉันเห็นข้อผิดพลาด'separatorColor' is unavailableบน tvOS
Banana

3

Swift 3, xcode เวอร์ชั่น 8.3.2, กระดานเรื่องราว -> เลือกตารางของคุณดู -> ตัวตรวจสอบ -> ตัวแยก

Swift 3, xcode เวอร์ชั่น 8.3.2

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