ฉันจะเปลี่ยนสี UIImage เมื่อแตะเซลล์ tableview ได้อย่างไร

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

ฉันลองใช้โค้ดนี้แล้ว แต่ไม่รู้ว่าจะนำไปใช้อย่างไรให้ถูกต้อง!

    let theImageView = UIImageView(image: UIImage(named:"foo")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate))
theImageView.tintColor = UIColor.redColor()

person MSmith    schedule 12.09.2016    source แหล่งที่มา
comment
คุณรู้วิธีสร้าง tableViewCell แบบกำหนดเองหรือไม่   -  person Sam_M    schedule 13.09.2016


คำตอบ (1)


ดูเหมือนว่าคุณมีชิ้นส่วนที่ถูกต้องแต่ไม่รู้ว่าจะเรียกมันไปที่ไหน คุณจะกำหนดรูปภาพให้กับมุมมองรูปภาพในวิธี cellForRowAt: ของคุณ

func tableView(_ tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath)
    cell.imageView.image = UIImage(named:"foo")!.withRenderingMode(.alwaysTemplate)
    return cell
}

จากนั้นคุณจะเปลี่ยนสีอ่อนของมุมมองรูปภาพในวิธีการมอบหมาย didSelect

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if let cell = tableView.cellForRow(at: indexPath) {
        cell.imageView.tintColor = newColor
    }
}
person keithbhunter    schedule 12.09.2016
comment
ขอบคุณ ฉันจะลองสิ่งนี้! ฉันจะต้องสร้างช่องทางให้กับ imageView เพื่อให้โค้ดที่ฉันเพิ่มใช้งานได้หรือไม่ ฉันยังมีหลายเซลล์ที่มีรูปภาพต่างกัน! ฉันจะทำให้แต่ละอันกลายเป็นสีขาวเมื่อแตะเซลล์ได้อย่างไร - person MSmith; 12.09.2016
comment
หากคุณใช้คลาส UITableViewCell ดีฟอลต์ คุณไม่จำเป็นต้องสร้างช่องทาง หากคุณใช้เซลล์มุมมองตารางแบบกำหนดเอง คุณจะต้องเชื่อมต่อช่องสำหรับมุมมองรูปภาพของเซลล์แบบกำหนดเองของคุณ หากเซลล์ของคุณมีมุมมองรูปภาพหลายมุมมอง ให้เปลี่ยนสีในแต่ละมุมมองรูปภาพด้วยวิธีการมอบหมาย didSelect - person keithbhunter; 12.09.2016
comment
ฉันใช้ tableview เริ่มต้น คุณช่วยกรุณาเพิ่มโค้ดเพื่อแสดงว่าคุณจะเปลี่ยนมันอย่างไรในแต่ละภาพได้หรือไม่? นอกจากนี้รหัสที่คุณป้อนใน cellForRow ก็ใช้งานไม่ได้ ขอบคุณ - person MSmith; 12.09.2016