2011-07-12 18 views
7

Tôi đang tạo một lớp con UIControl và có lập trình đặt mọi thứ trong đó. Bây giờ tôi đã có nó tạo nên tôi cần phải đặt nó nhiều lần trên màn hình khác nhau. Tôi biết bạn không thể tạo một plugin IB cho iOS, nhưng không có cách nào để lấy UIView trong IB và kích thước/đặt nó ở vị trí kiểm soát của tôi, và sau đó đặt thuộc tính Lớp tùy chỉnh là lớp con UIControl của tôi ? Tôi biết tôi sẽ không nhìn thấy nó cho thấy nó thực sự là trong IB, nhưng ít nhất điều này cho phép tôi thiết lập kích thước tổng thể và vị trí tương đối so với những thứ khác trên màn hình. Tôi cũng đã tạo ra các IBOutlets trong viewController của tôi và kết nối đúng cách khung nhìn IB với chúng. Tuy nhiên khi chạy, tôi không thấy bất kỳ tùy chỉnh nào và khi tôi đặt các điểm ngắt trong initWithFrame: hoặc loadView Tôi chưa bao giờ thấy mã của mình đang được gọi. Làm thế nào tôi nên làm điều này?UIControl tùy chỉnh phân lớp thiết lập vị trí trong IB cho iOS

+0

bạn đang sử dụng phiên bản IB/Xcode nào? – bshirley

+0

'initWithCoder:' được gọi khi một đối tượng được nạp từ một ngòi bút, bạn có thể thay thế đè lên 'awakeFromNib' – bshirley

+0

Sử dụng Xcode 4.0.1. @ bshirley Tôi nghĩ rằng đó là trường hợp, vì vậy tôi cũng đặt breakpoints trong 'loadView' mà nên được gọi trong cả hai trường hợp. – jamone

Trả lời

10

Bạn có thể kéo UIView vào tệp nib, sau đó sử dụng trình kiểm tra nhận dạng (command-opt-3) để thay đổi lớp thành bất kỳ lớp con nào của UIView.

Bạn sẽ cần đặt các lớp con trong mã khởi tạo được gọi khi được tải từ ngòi bút, nghĩa là không phải trong initWithFrame:. Nếu bạn đang mã hóa cho tính đầy đủ, cả hai phương thức (lập trình và dựa trên nib) nên gọi cùng một khởi tạo.

Nếu bạn thích, chỉ cần tạo và addSubview: trong mã khởi tạo, sau đó triển khai layoutSubviews để bố cục các bản xem phụ tùy chỉnh của bạn. Điều này sẽ được gọi bất cứ lúc nào chế độ xem được thay đổi kích thước cũng như ban đầu.

+0

Tôi là một moron. 'loadView' không phải là một phương thức trên' UIView', nhưng trên 'UIViewController'. Khác sau đó goof này tôi đã có nó chính xác theo cách này – jamone

+1

d'oh - rằng * sẽ * là một vấn đề =) – bshirley

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