2012-01-13 28 views
6

Tôi đã tạo một lớp 'abc' mà một lớp con của UIViewController. Tại thời điểm tạo nó, tôi nhấp vào tùy chọn để tạo một xib cho nó automaticaly. Bây giờ xcode tạo 3 tệp cho tôi 1. abc.h 2. abc.m 3. abc.xib.Làm thế nào xóa xib được tải?

Bây giờ bất cứ khi nào tôi tạo đối tượng lớp abc như abc * a = [abc alloc];

Ngay cả khi tôi không khởi tạo đối tượng với initiwithNibName và sử dụng nó, nó đang tải tệp xib. Vậy tập tin xib này được kết hợp với đối tượng abc như thế nào. Và ngay cả khi tôi đã xóa abc.xib, thì nó cũng tải tập tin xib đó. Tôi không thể hiểu từ nơi nó đang tải tập tin xib, nếu nó không có trong không gian dự án. Và nơi mà sự kết hợp của xib và bộ điều khiển được lưu trữ?

Xin cảm ơn trước.

+0

bạn cũng đã xóa nó khỏi thư mục chưa? hoặc chỉ là một tham chiếu từ cây nhóm? –

+0

tôi đã chuyển nó vào thùng rác. là nó giống như loại bỏ nó khỏi thư mục? – user1147070

+0

nếu bạn xóa từ cây nhóm. u có hai lựa chọn .. một là loại bỏ ref và khác là di chuyển đến thùng rác .. kiểm tra xem tập tin vẫn còn thr trong thư mục ur –

Trả lời

8

Điều đang xảy ra là việc triển khai mặc định initWithNibName:bundle: tìm kiếm Gói chính cho tệp Nib có cùng tên với lớp Chế độ xem của bạn. Điều này xảy ra cho dù bạn chọn tùy chọn tạo Nib tự động hay không. Xem tài liệu UIViewController (phần thảo luận của initWithNibName:bundle:).

Phương pháp initWithNibName:bundle: là trình khởi tạo mặc định của UIViewController, có nghĩa là ngay cả khi bạn không sử dụng nó trực tiếp (giả sử bạn sử dụng init thay thế) nó sẽ được gọi dưới mui xe.

Cuối cùng, ngay cả khi bạn xóa tệp Nib khỏi XCode, vì lý do nào đó (không chắc chắn lý do) nó không bị xóa khỏi gói chính (ít nhất là trong trình mô phỏng). Ngay cả khi bạn làm sạch &, hãy tạo dự án ở đó. Giải pháp tôi sử dụng để loại bỏ hoàn toàn tệp Nib là xóa ứng dụng khỏi trình mô phỏng, sau đó xóa sạch & lại.

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

+0

điều này làm việc cho tôi! –

1

Xib có lẽ vẫn còn trong khu vực biên soạn của bạn, vì vậy bạn cần phải thực hiện một sạch sẽ để loại bỏ nó hoàn toàn. (Sản phẩm >> Làm sạch). Phương thức init mặc định của UIViewControllers sẽ tự động tìm kiếm một xib cùng tên, đó là lý do tại sao nó vẫn phân bổ xib đó. Một khi bạn làm sạch nó sẽ dừng lại.

tham khảo: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/initWithNibName:bundle:

Lưu ý phần này: Nếu bạn chỉ định bằng không cho tham số nibName, bạn phải ghi đè lên các phương pháp loadView và tạo quan điểm của bạn có hoặc bạn phải cung cấp một tập tin nib trong nhóm của mình có tên (không có phần mở rộng .nib) khớp với tên của lớp trình điều khiển chế độ xem của bạn. (Trong trường hợp sau này, tên lớp sẽ trở thành tên được lưu trữ trong thuộc tính nibName.) Nếu bạn không thực hiện điều này, trình điều khiển chế độ xem sẽ không thể tải chế độ xem của nó.

+0

không có tôi làm sạch dự án, thậm chí tôi trống rỗng. nhưng nó vẫn đang tải xib – user1147070

+0

Bạn đã xóa nó khỏi hệ thống tập tin hay chỉ từ dự án của bạn (loại bỏ tùy chọn tham chiếu)? –

+0

và nếu giả sử tôi không gọi là initWithNibName trên đối tượng controoler của tôi? Sau đó, nó cũng sẽ kết hợp các tập tin nib (phù hợp với tên của bộ điều khiển xem của tôi) với bộ điều khiển? – user1147070

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