2009-10-29 39 views
7

Tôi có UIViewController tôi đang tải từ tệp xib và đẩy lên ngăn điều khiển điều hướng.Kết nối UILabel với IBOutlet gây ra sự cố

Trong tập tin tiêu đề cho View Controller, tôi có:

IBOutlet UILabel *myTitle; 

Tôi không làm bất cứ điều gì với "myTitle" trong mã chưa; Tôi chỉ đang thiết lập các kết nối.

Khi tôi biên dịch và chạy ứng dụng và không có nhãn nào được xác định trong tệp xib (và do đó, không có gì được đính kèm với IBOutlet), nó hoạt động. Trình điều khiển chế độ xem hoạt ảnh thành chế độ xem tốt, hiển thị chế độ xem tôi đã tạo trong Trình tạo giao diện.

Nếu tôi thêm nhãn vào xib trong trình tạo giao diện, nhưng không kết nối nhãn với ổ cắm và biên dịch lại, nó vẫn hoạt động, hiển thị nhãn với văn bản mặc định tôi đã nhập cho nó.

Nhưng nếu tôi kết nối IBOutlet myTitle với nhãn trong trình tạo giao diện, biên dịch lại và chạy ứng dụng, nó hoạt động tốt cho đến khi tôi cố đẩy bộ điều khiển chế độ xem lên ngăn xếp của bộ điều hướng, tại thời điểm đó tôi gặp sự cố:

*** -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x4558e20 

Nếu tôi ngắt kết nối lại ổ cắm, nó tiếp tục hoạt động, hiển thị nhãn tĩnh như trước. Có vẻ như có điều gì đó sôi nổi xảy ra khi chế độ xem được hiển thị vì sự cố xảy ra khi tôi đẩy chế độ xem vào ngăn điều hướng.

Tôi không phải thêm IBOutlet vào UILabel hay gì đó? Hay có chuyện gì khác xảy ra? Bất kỳ đề xuất về nơi để tìm sự cố?

Trả lời

6

Bạn đã tạo một người truy cập cho IBOutlet chưa?

@property (assign) IBOutlet UILabel *myTitle; 

Và sau đó, trong file .m bạn

@synthesize myTitle 
+0

Tôi gặp vấn đề giống hệt và tôi đã tạo một người truy cập. Nếu tôi đặt một điểm ngắt nó sẽ thổi lên trước khi tôi thậm chí đến được dòng mã đầu tiên. Trong trường hợp của tôi, vấn đề nằm trong bộ điều khiển xem đầu tiên (chỉ). – Andiih

9

Vâng, nó có thể được gây ra bởi tên param sai, ví dụ thử này:

IBOutlet UILabel title; 

và nó sẽ gọi một ngoại lệ như thế:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x143f520' 
+5

Tôi gặp vấn đề này khi tôi cố gắng gọi tên IBOutlet 'title'. Nếu tôi đổi tên nó thành 'theTitle' thì tất cả đều tốt. Có lẽ bạn phải cẩn thận với tên biến của bạn ở đây để tránh xung đột. –

+2

Thật vậy - 'tựa đề' được dành riêng và không có lỗi cờ nào tốt để cho bạn biết bạn đã bước vào định nghĩa nội bộ trong UIView. Điều này khiến tôi bối rối trong một thời gian. – radven

+0

để khóc to, tôi cũng vậy, bị mắc kẹt ở tuổi đó, cảm ơn! –

5

tôi đã cùng một vấn đề. Hóa ra * tiêu đề được dành riêng và Xcode không cho bạn biết điều này. Một khi tôi đổi tên nó thành một thứ gì khác nó đã hoạt động.

1

Trong trường hợp của tôi, tôi đã có UILabel trong UIToolBar. Điều cố định cho tôi là xóa thanh công cụ và thêm một thanh công cụ mới với một nhãn UILabel mới. Lỗi IB.

Các vấn đề liên quan