2014-04-11 18 views
11

Tôi muốn sử dụng số UISearchDisplayController trên UIViewController, bao gồm UITableView.
Tôi sử dụng Autolayout. Khi tôi cố gắng để đưa thanh tìm kiếm (_searchBar) trong tableHeaderView vớiLỗi xác nhận trong - [UITableView layoutSublayersOfLayer:]

self.tableView.tableHeaderView = _searchBar; 

tôi nhận được lỗi 'NSInternalInconsistencyException', lý do: 'Auto Layout vẫn cần thực hiện sau khi -layoutSubviews. Triển khai của UITableView -layoutSubviews cần gọi là siêu. '

Vô hiệu hóa Autolayout, lỗi biến mất, nhưng tôi cần Autolayout ...

Các lỗi xuất hiện, khi tôi sử dụng tế bào Tuỳ chỉnh hoặc StandardCells ...

Các lỗi xuất hiện, khi TableView có không có hàng ...

Trả lời

16

Là một giải pháp chung cho vấn đề này, hoặc ít nhất là một cách để tìm ra nguyên nhân của nó:

  • Bật ngoại lệ breakpoint
  • Subclass UITableView và ghi đè layoutSublayersOfLayer:, chỉ cần gọi siêu
  • Chạy ứng dụng của bạn - bạn sẽ dừng lại theo phương pháp mới
  • Trong trình gỡ lỗi, nhập po [self _autolayoutTrace]

Điều này sẽ hiển thị cho bạn bản in của mỗi chế độ xem trong cửa sổ, với bố cục tự động không thể đưa ra giải pháp được đánh dấu hoa thị hoặc AMBIGUOUS LAYOUT. Đây là những quan điểm bạn cần để điều tra các ràng buộc cho.

+0

Trong các dự án Swift: 'expr -l objC++ -o - [[UIWindow keyWindow] _autolayoutTrace] '(nguồn: https://carpeaqua.com/2015/07/07/auto-layout-debugging-in-swift/) –

6

Khi thêm chế độ xem con vào UITableView, có một số yêu cầu cụ thể cho chế độ xem phụ. Xem xét việc thêm subview vào một view khác (superview) trong controller của bạn thay vì UITableView.

"Auto Layout still required after executing -layoutSubviews" with UITableViewCell subclass

+1

Khi @Vladimir chỉ ra câu trả lời của mình, tự động trả lại lượt xem trong bảngView có thể sẽ kích hoạt lỗi đó (trong bảng, hoặc thậm chí tự động trả lời một tableViewHeader/Footer). Cũng giống như một lưu ý làm rõ, tôi thấy rằng lỗi này có thể không xuất hiện đối với một số bố cục trong iOS 8, nhưng chắc chắn sẽ xuất hiện trong iOS 7. – fbeeper

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