2013-09-03 23 views
9

Tôi đã tạo một tuỳ chỉnh UIView và tôi muốn initialize thông số tùy chỉnh từ UIStoryboard. Về cơ bản tôi đã thêm UIView vào số UIStoryboard và tôi đã thay đổi lớp học thành tùy chỉnh UIView của mình.Chuyển tham số từ bảng phân cảnh đến tùy chỉnh UIView iOS

Trong lớp tùy chỉnh UIView của tôi, tôi đang sử dụng phương pháp initWithCoder-initialize nó nhưng tôi muốn sử dụng cung cấp NSCoder để có được một số thông số cấu hình từ UIStoryboard, là điều này có thể hoặc là có một cách khác để vượt qua thông số từ UIStoryboard vào tùy chỉnh UIView của tôi?

Cảm ơn !!

+0

Bạn đã cố gắng tạo nó bằng cách sử dụng hàm tạo của riêng bạn. Giống như initWithCoder với các tham số trong đó. Tạo một hàm tạo mới trong lớp tùy chỉnh của bạn mà vượt qua phương thức này.Else nếu bạn cung cấp một số mã vào nó nó sẽ là tuyệt vời để hiểu được vấn đề. –

+0

Theo câu trả lời của tôi, giải pháp đó không hoạt động vì phương thức initWithCoder phản hồi một giao thức cụ thể và hệ thống sẽ gọi phương thức đó và nó không mong đợi bất kỳ tham số bổ sung nào. Vì lý do đó, tôi muốn thêm thông số tùy chỉnh của mình vào NSCoder, vì tôi có thể giải mã chúng bên trong initwithCode mà không gặp sự cố. Giải pháp này trong lý thuyết khá đơn giản nhưng tôi không có ý tưởng nếu nó có thể thêm các tham số cho NSCoder từ Storyboard. – rdiaz82

+0

Chúng ta không thể đi với một phương pháp tùy chỉnh để truyền các tham số. Giống như [xem myMethodCalled]. –

Trả lời

2

Rõ ràng là không thể để thêm các thông số để NSCoder sử dụng initwithCoder:

Initializing a view with custom initWithCoder

Tôi đã tìm thấy một workaround để giải quyết vấn đề, chỉ cần sử dụng User Defined Runtime Thuộc tính cách làm như sau:

1) Thêm thuộc tính tùy chỉnh trong bảng phân cảnh trong "Thuộc tính thời gian chạy do người dùng xác định".

2) Thêm các thuộc tính giống với lớp tùy chỉnh của tôi.

3) Sử dụng thuộc tính để tùy chỉnh UIView theo phương thức awakeFromNib.

Với giải pháp này, tôi có thể khởi tạo UIView tùy chỉnh của mình từ bảng phân cảnh và chỉ sử dụng nó từ bộ điều khiển của mình.

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