Tôi đã tìm kiếm ở khắp mọi nơi và không có gì cho đến nay đã làm việc cho tôi. Về cơ bản tôi muốn có một tập tin .xib được gọi là rootView.xib và bên trong nó tôi muốn có một UIView (cho phép gọi nó là containerView) chỉ chiếm một nửa màn hình (vì vậy sẽ có chế độ xem thông thường và một xem mới). Sau đó, tôi muốn một tập tin .xib khác gọi là firstView.xib và tải nó bên trong containerView. Vì vậy, tôi có thể có một loạt các công cụ trên firstView.xib và một loạt các công cụ khác nhau trong rootView.xib và tải firstView.xib của tôi bên trong containerView trong rootView.xib nhưng vì nó chỉ chiếm một nửa của màn hình, bạn vẫn sẽ thấy công cụ trên rootView.xibLàm thế nào để tải một tập tin xib trong một UIView
Trả lời
Để lấy đối tượng từ tệp xib theo chương trình, bạn có thể sử dụng: [[NSBundle mainBundle] loadNibNamed:@"MyXibName" owner:self options:nil]
trả về một mảng các đối tượng cấp cao nhất trong xib.
Vì vậy, bạn có thể làm điều gì đó như thế này:
UIView *rootView = [[[NSBundle mainBundle] loadNibNamed:@"MyRootView" owner:self options:nil] objectAtIndex:0];
UIView *containerView = [[[NSBundle mainBundle] loadNibNamed:@"MyContainerView" owner:self options:nil] lastObject];
[rootView addSubview:containerView];
[self.view addSubview:rootView];
@Matt Thanh toán giải pháp của tôi trên github. https://github.com/PaulSolt/CompositeXib –
@PaulSolt sir tôi có một truy vấn liên quan đến queston này. tôi muốn mở subview của xib như trình đơn slide. Khi tôi bấm vào nút menu từ trình điều khiển xem chỉ subview (đó là một nửa màn hình của xib) nên được trượt. xin vui lòng giúp đỡ nếu nó có thể. –
Nó không hoạt động với 'thisView.alpha = 0',' thisView.superview' (cho thấy nil) – Jack
Bạn có thể thử:
UIView *firstViewUIView = [[[NSBundle mainBundle] loadNibNamed:@"firstView" owner:self options:nil] firstObject];
[self.view.containerView addSubview:firstViewUIView];
Nó không chính xác những gì bạn đề nghị. Ông nói rằng "rootView.xib" của mình sẽ có một subView một nửa kích thước của màn hình có tên là "containerView". Và vào containerView, ông muốn tải nội dung của nib "firstView.xib" của mình. – NJones
Tôi tạo ra một dự án mẫu trên github để tải một UIView từ một tập tin .xib bên trong tệp .xib khác. Hoặc bạn có thể làm điều đó theo chương trình.
Điều này phù hợp cho các tiện ích con bạn muốn sử dụng lại trên các đối tượng UIViewController khác nhau.
- New Approach: https://github.com/PaulSolt/CustomUIView
- gốc Cách tiếp cận: https://github.com/PaulSolt/CompositeXib
[Swift thực hiện]
cách phổ quát của xem tải từ xib:
Ví dụ:
let myView = NSBundle.loadView(fromNib: "MyView", withType: MyView.self)
Thực hiện:
extension NSBundle {
static func loadView<T>(fromNib name: String, withType type: T.Type) -> T {
if let view = NSBundle.mainBundle().loadNibNamed(name, owner: nil, options: nil)?.first as? T {
return view
}
fatalError("Could not load view with type " + String(type))
}
}
Tạo một file XIB:
File -> mới File -> ios-> cacao lớp cảm ứng -> tiếp theo
chắc chắn dấu kiểm "cũng tạo file XIB"
Tôi muốn thực hiện với tableview
vì vậy tôi chọn lựa lớp con UITableViewCell
bạn có thể chọn như requerment bạn
tập XIB desing như mong muốn của bạn (RestaurantTableViewCell.xib)
chúng ta cần phải lấy chiều cao hàng để thiết lập bảng mỗi hàng hegiht
Now! cần phải giấu chúng nhanh chóng. tôi đang giấu restaurantPhoto
và restaurantName
bạn có thể giấu tất cả các bạn.
Bây giờ thêm một UITableView
tên
Tên của tập tin nib, mà không cần phải có đuôi tên miền .nib.
chủ sở hữu
Đối tượng để chỉ định làm đối tượng Chủ sở hữu tệp của nib.
tùy chọn
Từ điển chứa các tùy chọn để sử dụng khi mở tệp nib.
trước tiên nếu bạn không xác định trước rồi lấy tất cả xem .. vì vậy bạn cần phải lấy một chế độ xem bên trong bộ đó frist
.
Bundle.main.loadNibNamed("yourUIView", owner: self, options: nil)?.first as! yourUIView
đây là bảng điều khiển xem đầy đủ đang
import UIKit
class RestaurantTableViewController: UIViewController ,UITableViewDataSource,UITableViewDelegate{
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let restaurantTableviewCell = Bundle.main.loadNibNamed("RestaurantTableViewCell", owner: self, options: nil)?.first as! RestaurantTableViewCell
restaurantTableviewCell.restaurantPhoto.image = UIImage(named: "image1")
restaurantTableviewCell.restaurantName.text = "KFC Chicken"
return restaurantTableviewCell
}
// set row height
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 150
}
}
bạn thực hiện :)
bạn có thể cho biết. tại sao xuống bình chọn sau đó tôi sẽ được vui mừng –
Ví dụ của bạn là ok cho xem từ xib tải. Nhưng đối với tableView nó sai - các tế bào tái sử dụng là đúng cách – Viktor
- 1. Làm thế nào xóa xib được tải?
- 2. Làm thế nào để tải XIB?
- 3. Làm thế nào để thêm một cột từ một tập tin vào một tập tin
- 4. Làm thế nào để tải tập tin một .properties thành một jsp
- 5. Ruby: Làm thế nào để tải một Hash từ một tập tin?
- 6. Làm thế nào để tải XIB với một ViewController cấp cao nhất?
- 7. Làm thế nào để tải một tập tin xem magento (.phtml) từ một bộ điều khiển
- 8. Làm thế nào để mở một tập tin trong java
- 9. Làm thế nào để nhúng một tập tin vào một tập tin HTML?
- 10. Làm thế nào để tải tất cả các tập tin trong một thư mục với XNA?
- 11. Làm thế nào để tải lên một tập tin trong ruby trên đường ray?
- 12. làm thế nào để tải một tập tin Javascript để ray html ERB
- 13. Unix: Làm thế nào để xóa các tập tin được liệt kê trong một tập tin
- 14. làm thế nào để có được một biến từ một tập tin vào một tập tin trong Node.js
- 15. Làm thế nào để lưu trữ một bảng băm trong một tập tin?
- 16. iOS5 Chỉ định một .xib cho một lớp UIView tùy chỉnh
- 17. Làm thế nào để bảo vệ tên tập tin từ xa khi tải về một tập tin sử dụng curl
- 18. Làm thế nào để đọc một tập tin trong Groovy thành một chuỗi?
- 19. làm thế nào để tải về một tập tin filefield theo quan điểm django
- 20. Làm thế nào để chọn một tập tin trống?
- 21. Làm thế nào để tải lên một tập tin/hình ảnh thông qua deliciouspie
- 22. Làm thế nào để biết kích thước của một tập tin trước khi tải xuống?
- 23. Làm thế nào để tải lên và lưu một tập tin sử dụng khuôn khổ chai
- 24. Làm thế nào để đọc nội dung tập tin vào một biến trong một tập tin thực thi?
- 25. Làm thế nào để tải một tuỳ chỉnh PHP Magento Khối bên trong một tập tin mẫu
- 26. Làm thế nào để tải dữ liệu từ một tập tin, cho một bài kiểm tra đơn vị, trong python?
- 27. Làm thế nào thường python tuôn ra một tập tin?
- 28. Cách tạo lớp con UIView với xib?
- 29. Làm thế nào để dỡ bỏ một tập tin lisp trong CLisp REPL?
- 30. Tải một xib khác cho iPhone 5
Note, questin này là cổ xưa. Trong nhiều năm nay, chỉ cần sử dụng chế độ xem vùng chứa [hướng dẫn] (http://stackoverflow.com/questions/23399061/objective-c-how-to-add-a-subview-that-has-its-own-uiviewcontroller/23403979 # 23403979) – Fattie