2011-04-28 3 views
5

UITableViewCell sửa đổi nội dung của phân cấp contentView của nó khi ô được đánh dấu (người dùng chạm xuống trên ô).Làm rõ hành vi không có giấy tờ của UITableViewCell trên sự kiện nổi bật

Hai ví dụ tôi đã tìm thấy cho đến nay:

  • Đặt một UIView trong contentView của tế bào với một màu nền. Màu nền của UIView được loại bỏ khi ô bảng được tô sáng (nó dường như được thiết lập để có nền rõ ràng.)
  • Đặt UIButton trong contentView. Khi ô được đánh dấu, nút cũng được buộc vào trạng thái được đánh dấu.

Như thể có một số logic trong ô UITableView kiểm tra tất cả các khung nhìn trong phân cấp của ô và sửa đổi chúng theo một bộ quy tắc bí ẩn, sau đó khôi phục chúng trở lại bình thường khi ô chưa được đánh dấu.

Bất cứ ai có thể giải thích điều gì và tại sao UITableViewCell đang sửa đổi (bất ngờ và trong thời trang không có giấy tờ) trong nội dung của các ô xem bảng tùy chỉnh của tôi?

Cảm ơn!

Trả lời

1

Các nổi bật của UITableViewCell được diễn tả trong Apple docs như sau:

Các làm nổi bật ảnh hưởng đến xuất hiện của nhãn, hình ảnh và nền. Khi trạng thái của ô được đánh dấu là được đặt thành CÓ, các nhãn được vẽ trong văn bản được đánh dấu màu (mặc định là màu trắng). Giá trị mặc định là KHÔNG. Nếu bạn đặt trạng thái được đánh dấu là thành CÓ thông qua thuộc tính này, việc chuyển đổi sang giao diện trạng thái mới không hoạt ảnh. Đối với trạng thái được đánh dấu hoạt ảnh chuyển tiếp, hãy xem phương thức setHighlighted: animated:.

Lưu ý rằng để làm nổi bật để làm việc đúng cách, bạn phải lấy nhãn của tế bào bằng cách sử dụng textLabel và tính detailTextLabel và thiết lập highlightedTextColor tài sản của mỗi nhãn; đối với hình ảnh, hãy lấy hình ảnh của ô bằng cách sử dụng thuộc tính imageView và đặt thuộc tính HighlightImage của đối tượng UIImageView là đối tượng được đánh dấu.

Điều này không đề cập đến UIButtons, nhưng this post là cách ngăn nút chuyển sang trạng thái được đánh dấu khi ô đó thực hiện.

+2

Cảm ơn bạn mặc dù đây chỉ là một phần tài liệu - nó không thảo luận về các đặc tính UIView backgroundColor tùy ý cũng được thay đổi để rõ ràng, và vì vậy nó chắc chắn là một lời giải thích không đầy đủ. Tôi muốn nhận được tất cả những điều nó thay đổi thành câu trả lời. Tuy nhiên, giải pháp bạn liên kết đến - triển khai trạng thái đánh dấu/chọn tùy chỉnh bằng cách ghi đè setHighlighted: animated: và setSelected: animated: - cho phép tôi ngăn chặn hoàn toàn các thay đổi nổi bật hỗn hợp/không có giấy tờ xảy ra, không gọi phương thức siêu trong ghi đè và tự làm mọi thứ. – Yetanotherjosh