Tôi có lớp trình điều khiển chế độ xem cơ sở kế thừa từ UIViewController
và lớp được thừa kế từ lớp cơ sở viewcontroller
. Bây giờ tôi có một nib có chủ sở hữu tập tin là lớp kế thừa nhưng tất cả các hành động và cửa hàng của tôi là trong lớp cơ sở. Thậm chí có thể kết nối action \ outlet trong tệp nib với lớp cơ sở không?cách kết nối với IBOutlet hoặc IBAction trong lớp cơ sở
Trả lời
Sẽ cơ bản giải thích nó bằng cách example:
Định nghĩa một lớp cơ sở (chúng ta hãy gọi nó BaseViewController
) và gán cho nó một IBOutlet UITableView
trong file .h:
// BaseViewController.h
@interface BaseViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
Xác định hai đứa con lớp (tức là FirstChildViewController
và SecondChildViewController
):
// FirstChildViewController.h
@interface FirstChildViewController : BaseViewController
@end
// SecondChildViewController.h
@interface SecondChildViewController : BaseViewController
@end
Bây giờ để làm một trong hai (hoặc cả hai) các childre Các lớp n sử dụng iboutlet của lớp cơ sở, chỉ cần kéo cửa sổ tham chiếu đến định nghĩa thuộc tính trong tệp .h của lớp cơ sở .. và đó là nó!
here là một dự án hoàn chỉnh để minh họa này.
hmm .. điều này dường như không hoạt động cho swift –
Hai cách để thực hiện điều này:
1)
làm điều đó theo chương trình (ví dụ: trong code)
Đầu tiên tuyên bố các cửa hàng của bạn trong lớp cơ sở.
và sau đó gán các cửa hàng của bạn qua mã trong lớp được kế thừa của bạn.
và
2)
Bạn cũng có thể gán các cửa hàng và hành động của bạn trong tập tin XIB của bạn. Xcode biết về các cửa hàng và hành động kế thừa từ các lớp cơ sở.
Nếu lớp cơ sở nằm trong khung Swift, thì đôi khi Xcode 7 sẽ không thấy các cửa hàng, ngay cả khi lớp cơ sở và các cửa hàng của nó được công khai. Trong trường hợp này cách giải quyết như sau:
- trong IB thiết lập sự kiểm soát sử dụng các lớp cơ sở
- Kết nối các cửa hàng
- trong IB thiết lập sự kiểm soát sử dụng các lớp có nguồn gốc
IB sẽ hiển thị "!" bên cạnh các cửa hàng như thể họ đang thiếu, nhưng sẽ không có lỗi trong thời gian chạy.
Nếu ai đó có giải pháp tốt hơn, hãy cho tôi biết!
Bạn có thể giải thích chi tiết hơn một chút về cách thực hiện công cụ này không? – c0d3Junk13
@ c0d3Junk13: Mở bảng phân cảnh. Hiển thị Trình kiểm tra danh tính. Chọn điều khiển. Đặt lớp của nó thành lớp cơ sở. Kết nối các cửa hàng.Chọn cùng một điều khiển và đặt lớp cho lớp dẫn xuất. Bỏ qua cảnh báo. – phatmann
hmm .. điều này dường như bị hack .. có được phép không? hoặc là cái gì đó sẽ phá vỡ sau này trên –
Có. Tất cả các tệp của bạn trong cùng một dự án trong Xcode phải không? – wbyoung