Chế độ xem bảng tĩnh bên ngoài UITableViewControll


159

Sau khi cập nhật Xcode mới, ứng dụng của tôi không xác thực và hiển thị lỗi này:

Chế độ xem bảng tĩnh chỉ hợp lệ khi được nhúng trong các phiên bản UITableViewCont kiểm

Bất kỳ cơ hội để giải quyết dễ dàng?


Phụ thuộc vào lý do tại sao bạn đang sử dụng lớp con UIViewControll thay vì UITableViewControll.
David Berry

3
Bởi vì tôi cần các yếu tố khác trong chế độ xem không thuộc về UITableViewControll
Francesco S

1
Trải qua vấn đề tương tự ở đây. Chỉ cần nâng cấp (hoặc hạ cấp, có vẻ như cho đến nay) lên Xcode 5.1 và tôi có cùng một vấn đề. Tôi có một loạt các ô tĩnh trong một lớp con UITableViewControll bên trong UISplitViewControll của tôi.
Stefan Arambasich

Bắt đầu xảy ra với tôi sau khi nâng cấp. Tôi có một số bộ điều khiển xem được xây dựng với các ô tĩnh, nó không lý tưởng nhưng nó hoạt động tốt trước đây.
jdmunro

Bạn không cần sử dụng UITableViewControll. Bạn gặp lỗi này nếu bạn có các ô xem bảng tĩnh trong UiTableView của mình, vì vậy tôi nghĩ một giải pháp dễ dàng là nếu bạn cần các ô, đừng để nó tĩnh. Chỉ cần thêm đại biểu xem bảng và nguồn dữ liệu và các phương thức UITableViewDelegate giả
EarlySun

Câu trả lời:


341

Cách duy nhất để có được một UITableView tĩnh cùng với các điều khiển khác trên cùng một màn hình là sử dụng Chế độ xem Container. Theo cách này, nó hoạt động hoàn hảo:

  1. Kéo một ViewContoder vào bảng phân cảnh của bạn.
  2. Kéo một TableViewContoder vào bảng phân cảnh của bạn.
  3. Tiếp theo Kéo chế độ xem Container vào ViewContoder của bạn và kích thước nó về kích thước bạn muốn (nhỏ hơn chế độ xem) -> khi bạn kéo chế độ xem container, nó sẽ tạo ra một khung nhìn và một khung nhìn khác. Hủy bỏ segue đó và xem.
  4. Sau đó, cuối cùng nhấp vào ctrl trong thùng chứa của bạn và kéo đến TableViewContoller mới của bạn. Chọn Nhúng.
  5. Tạo kiểu cho TableView theo cách bạn muốn -> bao gồm các ô tĩnh.

Chúc may mắn.

Câu trả lời này đã được tìm thấy và đưa ra ở đây: G.Huebner -> http://web.archive.org/web/20140928102504/http://iphencedevsdk.com/forum/iphone-sdk-development/111800-static-table- view-cell-only-work-in-a-uitableviewcontroll.html


Nơi để đưa ra hoặc hành động? Trong UIViewControllerhoặc tôi nên phải thực hiện UITableViewController.
Bhavin Ramani

@Bhavin Ramani: Vì nó là UITableViewControll trong vùng chứa nên tôi đề nghị lấy chính xác lớp / lớp con đó để giữ IBOutlets của bạn.
LukeSideWalker

2
Tôi đoán toàn bộ ý tưởng "tế bào tĩnh" được thực hiện theo cách phụ thuộc vào một số chức năng bên trong của UITableViewController.
Nicolas Miari

2
Cảm ơn vì điều này. Có thể xác nhận nó hoạt động trong Xcode 8.3.1.
Atharva Vaidya

Tuyệt vời! Tôi đã tìm kiếm giải pháp này trong một thời gian.
Jason Foglia

8

Một UITableView tĩnh phải nằm trong UITableViewControll. Vì vậy, bạn sẽ đặt bảng trong UITableViewControll và sau đó thêm nó dưới dạng childView vào MainViewControll.

Bạn có thể tham khảo https://iphoneidoit.blogspot.in/2013/10/static-uitableview-in-uiviewcontroll.html


1
Có nhiều cách xung quanh điều này trước đây, (chẳng hạn như giữ lại ô), nhưng bây giờ nó là một lỗi bất kể. Tôi nghĩ rằng câu hỏi là gợi ý nếu có cách để khắc phục lỗi.
Matthew Knippen

Đúng vậy đó. Thật không may, cuối cùng tôi đã giải quyết vấn đề bằng cách sử dụng bảng không tĩnh
Francesco S

1
Rất tiếc. Lượng công việc lại cần thiết để chuyển đổi thành không tĩnh do tất cả các IBOutlets trong tệp trình điều khiển chế độ xem của tôi quá nhiều và IMO không thể chấp nhận để cập nhật phá vỡ điều này mà không có cảnh báo hoặc ghi chú nào về điều này trong nhật ký thay đổi ( Tôi cho rằng nó vẫn hoàn toàn hợp lệ trên giấy để có một UITableViewControllertế bào tĩnh bên trong UISplitViewContoller. Tôi đã liên hệ với bộ phận hỗ trợ của nhà phát triển Apple và chỉ nhận được một phản hồi email không hữu ích liên kết tôi với các diễn đàn. Tôi cho rằng tôi sẽ thử ở đó và xem nếu có ai gặp vấn đề tương tự sau khi cập nhật.
Stefan Arambasich 17/03/2016

4

Tôi nghĩ những gì bạn đang làm là trước tiên bạn kéo ViewContoder trên bảng phân cảnh và sau đó kéo bảngView trên ViewContoder. Theo cách này, bạn không thể sử dụng các ô bảng tĩnh. Thay vì điều này, những gì bạn nên làm là Kéo TableViewContoder trên bảng phân cảnh chính thay vì ViewContoder và sau đó chọn các ô tĩnh. Theo cách này, bạn có thể làm việc trên các ô tĩnh và có thể sử dụng bất kỳ phần tử nào trên các ô tĩnh.


0

Chà, nếu bạn thực sự đang sử dụng một bảngView tĩnh, bạn nên xem xét sao chép / quá khứ mọi thứ vào ScrollView hoặc StackView.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.