2013-07-18 32 views
7

Tôi thích tạo các chế độ xem của mình dưới dạng các tệp Xib độc lập rồi khởi tạo chúng và thêm làm các bản xem trước.Bố cục Tự động với UINavigationBar và UIBarButtonItem

Vì vậy, khi làm việc với một UINavigationBar, tôi mong đợi để có thể làm điều tương tự, đầu tiên tạo ra giao diện tùy chỉnh của tôi - từ xib - sau đó thêm nó như là một giao diện tùy chỉnh cho UIBarButtonItem:

UIBarButtonItem *anItem = [[UIBarButtonItem alloc] initWithCustomView:_myCustomView]; 

Sau đó thêm vào thanh điều hướng:

self.navigationBar.topItem.rightBarButtonItems = @[ anItem, anotherItem ]; 

Cho đến nay rất tốt.

Bây giờ, _myCustomView sử dụng Bố cục tự động (AL) và tôi nghĩ điều này sẽ không thành vấn đề. Không phải vậy. Tôi đã thử mọi thứ. Không có gì có hiệu quả. Tôi thậm chí đã cố gắng thêm xem tùy chỉnh như là một subview của bộ điều khiển có thanh điều hướng. Nghĩ rằng với tư cách là anh chị em trong hệ thống phân cấp khung nhìn, AL sẽ coi nó như một khung nhìn thông thường bên ngoài UINavigationBar.

Điều đó không có tác dụng. Bộ điều khiển updateViewConstraints được gọi nhưng không bao giờ được áp dụng. Khung hình ban đầu của khung nhìn được giữ nguyên tại CGRectZero. Nó giống như AL thấy rằng quan điểm là trên đầu trang của một UINavigationBar, ngay cả như một anh chị em, và quyết định nó không cần phải đặt ra.

Tất nhiên, tôi đã thử bringSubviewToFront, translatesAutoresizingMaskIntoConstraintstranslatesAutoresizingMaskIntoConstraints, v.v. Sau đó đã đáng yêu:

Chấm dứt ứng dụng do ngoại lệ uncaught 'NSInternalInconsistencyException', lý do: 'Auto Layout vẫn cần sau khi thực hiện -layoutSubviews. MyNavigationBar's triển khai -layoutSubviews cần gọi super. '

Vì vậy, câu hỏi là, có ai nạp một cái nhìn tùy chỉnh với AL từ một xib, và thiết lập thành công này như một customView trên UIBarButtonItem? Nếu vậy, làm thế nào?

+0

Tôi chưa thực sự gửi một Radar cho nó, nhưng tôi đã chạy vào điều này là tốt và nó có vẻ là một lỗi iOS 6. Tạo UIBarButtonItem và khung nhìn của nó có lập trình thể hiện cùng một vấn đề. – Ryan

+0

Bạn có tìm thấy giải pháp cho vấn đề này không? – Redwarp

+0

Bất kỳ tin tức nào về chủ đề đó? Tôi nghĩ rằng tôi vẫn còn có một vấn đề tương tự (mặc dù với một thanh công cụ) trong iOS 7. –

Trả lời

1

Trông giống như một bản sao của iOS Autolayout and UIToolbar/UIBarButtonItems

UIBarButtonItems không kế thừa từ UIView, vì vậy sử dụng xem tùy chỉnh tự động bố trí dựa trong họ có thể không được hỗ trợ đầy đủ. Có vẻ như bạn phải làm điều bố trí tự động trước cho đến khi vấn đề được giải quyết. Tôi sẽ đề nghị nộp một lỗi.

EDIT: Bằng điều trước bố cục tự động, tôi có nghĩa là thao tác trực tiếp khung hình của chế độ xem của bạn.

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