2011-11-02 7 views
6

Một vài ngày trước, tôi đã xem video hướng dẫn giải thích cách sử dụng các ô tùy chỉnh trong một UITableViewController. Tôi đã học được rằng tôi có thể chuẩn bị một ô tùy chỉnh trực tiếp trong trình tạo giao diện, vì vậy tôi đã làm theo:Làm thế nào để kết nối IBOutlet từ UITableViewController trực tiếp với ô tùy chỉnh?

Tôi đã tạo UITableViewController và kết nối lớp tùy chỉnh bao gồm IBOutlet (UILabel). Sau đó, tôi chuyển sang bảng phân cảnh của mình và chuẩn bị ô tùy chỉnh bằng một nhãn UILabel. Cuối cùng, tôi kết nối nhãn từ UITableViewController với ô tùy chỉnh của tôi trực tiếp.

Sau đây sẽ xảy ra:

Couldn't compile connection: <IBCocoaTouchOutletConnection:0x400724860 <IBProxyObject: 0x4007872c0> => productLabel => <IBUIImageView: 0x401080220>> 

Không phải là nó có thể kết nối trực tiếp này? Trong video hướng dẫn của WWDC 2011 Section (Session # 309), chúng thực hiện chính xác những gì tôi đã làm. Nhưng có một cái móc: họ không hiển thị mã phía sau, họ chỉ kết nối nó như tôi đã giải thích ở trên.

Đối với một sự hiểu biết tốt hơn tôi thêm một ảnh chụp màn hình cho thấy, những gì tôi kết nối: enter image description here

Trả lời

3

Trên thực tế,

Tôi đã thấy các video và họ không được kết nối theo cách bạn đề nghị. Họ đang kết nối từ các tế bào với UILabel trong tế bào. Nói cách khác, họ có một lớp con của UITableViewCell và đang kết nối những IBOutlets đó trong đối tượng tùy chỉnh. Trong hình thức cơ bản của nó, bạn có thể tạo một lớp tế bào tùy chỉnh và chỉ cần khai báo giao diện và tổng hợp các thuộc tính và bạn nên tốt để đi. Chỉ cần đảm bảo bạn thiết lập số nhận dạng và lớp tùy chỉnh của bạn một cách chính xác trong bảng phân cảnh.

Hy vọng điều này sẽ hữu ích.

+0

Có, điều này là chính xác. Nó rất có thể là một phân lớp của UITableViewCell. – Simon

+0

Tôi đã xem lại video. Bạn đúng! Lỗi của tôi. Lấy làm tiếc. Câu hỏi tiếp theo của tôi sẽ là làm thế nào tôi có thể điền vào các tế bào với dữ liệu (các thuộc tính chuyển đến TableCell.h, vì vậy tôi không thể truy cập chúng trong - cellForRowAtIndexPath: (NSIndexPath *) indexPath trong UITableViewController). Nếu bạn biết câu trả lời nhanh cho điều đó, bạn được chào đón - nếu không tôi sẽ hỏi Google, tôi chắc chắn ai đó đã hỏi trước đó; o) –

+0

nếu ai đó có cùng vấn đề như tôi đã giải thích trong nhận xét ở trên, hãy xem: http : //www.youtube.com/watch? v = d_kO-J3DYvc –

4

Tôi gặp vấn đề tương tự ở số this question. Khi người trả lời câu hỏi của tôi nói, vấn đề là tế bào ở đây là một tế bào nguyên mẫu. Một kết nối giữa phần tử ô và UITableViewController hoạt động tốt cho chế độ xem bảng với các ô tĩnh vì chúng được tạo lúc khởi chạy, nhưng nó không có ý nghĩa đối với các ô mẫu vì nhiều phần tử có thể được tạo ... và chúng không tồn tại cho đến khi cellForRowAtIndexPath được gọi. (Đây là thông báo lỗi thực sự kém và Xcode có thể không cho phép bạn tạo kết nối bất hợp pháp như thế này.)