Tôi có một lớp con của UICollectionViewCell
. Các tế bào được thiết kế trực quan trong kịch bản với rất nhiều thành phần và các thành phần này được ràng buộc với các biến trong lớp con Swift bằng cách sử dụng bảng phân cảnh.Cách khôi phục các ràng buộc trong UICollectionViewCell sau khi được giải mã
Lớp Swift chỉ cung cấp logic để điền các thành phần từ dat được truy xuất từ nguồn dữ liệu.
Ví dụ:
class InfoCollectionViewCell : UICollectionViewCell {
@IBOutlet weak var mainPanel : UIView!
@IBOutlet weak var panel1 : UIView!
@IBOutlet weak var firstName : UILabel!
@IBOutlet weak var lastName : UILabel!
@IBOutlet weak var address : UILabel!
etc ...
func setVariousProperties(etc) {
firstName.text = ... etc
Các dữ liệu mã nguồn không điều thông thường:
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("InfoCell", forIndexPath:indexPath)
if let c : InfoCollectionViewCell = cell as? InfoCollectionViewCell {
c.setVariousProperties(...)
}
tôi ban đầu chỉ thực hiện giải mã/phương pháp mã hóa có chứa một "không được thực hiện" sự khẳng định, nhưng nó trở nên rõ ràng đôi khi khung công tác mã hóa và giải mã lớp. Tôi đã triển khai các phương thức mã hóa/giải mã giả mà không lưu các thành phần dẫn đến các vấn đề có thể dự đoán được với các giá trị nil khi các thành phần được truy cập.
Vì vậy, có vẻ như tôi bắt buộc phải triển khai mã hóa và giải mã tất cả các điều khiển trong từng lớp con một, hoặc tôi phải tìm cách tốt hơn.
Có vẻ như lãng phí thời gian vì tôi không thực sự cần (tôi không nghĩ) để lưu nội dung của các thành phần vì chúng sẽ chỉ được sử dụng lại bởi lớp con: Tôi sẽ ghi đè lên nội dung thành phần sẽ có giá trị từ nguồn dữ liệu.
Rõ ràng, tất cả các điều khiển được xác định trong bảng phân cảnh. Tôi có thể lấy chúng theo cách thủ công bằng tên từ bảng phân cảnh theo phương pháp init, nhưng điều đó có vẻ kém tẻ nhạt và làm cho liên kết đồ họa của các điều khiển và các biến dư thừa.
Có cách nào tốt hơn không?
Tôi có thể chỉ nói "khôi phục kết nối" hoặc nội dung tương tự không?
EDIT:
Một nơi nào đó giữa đăng câu hỏi và thêm tiền thưởng, vấn đề ngừng xảy ra. Bây giờ tôi nhận thấy rằng phương pháp mã hóa của các thành phần của tôi không được gọi. Vì một lý do nào đó, khung công tác đã quyết định sắp xếp lại các đối tượng của tôi và deserialise chúng, nhưng bây giờ nó không phải là. Do đó vấn đề không xảy ra và tôi không thể cung cấp stack-trace.
Có thể hiểu rằng một số cập nhật cho XCode đã khắc phục sự cố này hoặc có thể là một vấn đề khác.
Tôi rõ ràng vẫn lo ngại có một số lỗi ẩn ở đâu đó.
Bất cứ ai khác có vấn đề này? Tôi sẽ đánh giá cao ý kiến. – rghome