OK đây là một điều kỳ lạ. Tôi đã đập đầu của tôi chống lại nó trong một giờ bây giờ cố gắng để gỡ lỗi.UIBarButtonItem với chế độ xem tùy chỉnh không hiển thị sau khi xem lần đầu tiên
Tôi đã tạo UIBarButtonItem với chế độ xem tùy chỉnh, là UIButton có hình ảnh được gán cho nó. Mã này là như sau
UIButton *btnAdd = [[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease];
[btnAdd setImage:[UIImage imageNamed:@"btn_add"] forState:UIControlStateNormal];
[btnAdd addTarget:self
action:@selector(addBox)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithCustomView:btnAdd];
self.navigationItem.rightBarButtonItem = add;
Nó nằm ở phương pháp - (id)initWithNibName:
của tôi trên một UIViewController mở rộng
On sự xuất hiện đầu tiên của UIViewController, nút xuất hiện như bình thường, và hoạt động tốt. BAO GIỜ, nếu tôi đẩy đến một bộ điều khiển xem khác, và sau đó nhấn trở lại, nút là KHÔNG THỂ.
Ngay cả khi nó ẩn, nút vẫn hoạt động. Tôi có thể nhấp vào nó và nó hoạt động bình thường. Tôi biết thực tế đó là UIButton gốc ở đó, vì tôi đã thực hiện các dấu vết trên địa chỉ bộ nhớ của nó và các thuộc tính khác ... tài sản ẩn của nó là FALSE và thuộc tính alpha của nó được đặt thành 1.00f
Tôi nghĩ lúc đầu, điều này có lẽ là một vấn đề sâu sắc, nhưng tôi có mã đẩy nền UINavigationBar tùy chỉnh của tôi ở mặt sau trên mọi vòng lặp khung và không có gì thay đổi. XEM CẬP NHẬT
Nó gần giống như hình ảnh được phát hành hoặc một cái gì đó đằng sau hậu trường, nhưng con trỏ vào đó cũng là tốt ...
Tôi đoán đây là một số những đứa vẽ kỳ lạ mà tôi chỉ cần khỉ xung quanh với, nhưng đó là một vấn đề rất khó để google cho.
Mọi gợi ý sẽ được đánh giá cao.
CẬP NHẬT
Hóa ra đây là một vấn đề chiều sâu. Tôi vẽ một nền tùy chỉnh trên drawRect :, và mã DOES đẩy nền tùy chỉnh vào mặt sau của khung nhìn, TUYỆT ĐỜI, phương pháp này chỉ được gọi một lần bằng các phương pháp khung riêng ... do đó khi thanh được vẽ lại sau xem đầu tiên, nền không bị buộc phải quay lại và vì một lý do ngu ngốc nào đó, nó quyết định vẽ lại các nút phía sau nó.
Vì vậy, ngay bây giờ tôi đang cố gắng tìm ra cách tôi có thể buộc nền được đẩy trở lại mỗi khi UINavigationBar được hiển thị.
Tốt hơn nên thêm các nút vào thanh điều hướng của bạn trong 'viewDidLoad'. Hãy thử điều này trước. Và cố gắng thiết lập hình ảnh đó cho tất cả các trạng thái UIButton. – Nekto
Tôi thực sự vui vì tôi đã tìm thấy điều này, tôi sẽ trải qua chính xác điều tương tự. Các giải pháp dưới đây không cảm thấy phù hợp với tôi, và giống như hack hơn. Nhưng nếu bạn đã tìm ra người bạn đời này, tôi rất thích nhìn thấy những gì bạn đã làm. – n00shie