2013-11-24 13 views
6

Tôi có một đối tượng điều khiển sở hữu một NSMenu và là đại biểu của trình đơn, vì lợi ích của dân số lười biếng.NSMenu đại biểu không được gọi để điền nó

Tuy nhiên, không phải numberOfItemsInMenu: cũng không phải menuNeedsUpdate: đã từng được gọi và do đó trình đơn vẫn trống.

Tôi đã khẳng định rằng:

  • Các đối tượng điều khiển chưa được deallocated. (Bộ điều khiển, lần lượt, sở hữu menu.)
  • Nó có một menu.
  • Menu có đại biểu và đó là bộ điều khiển.

Nếu tôi thực hiện menuWillOpen:, mà được gọi, nhưng you're not supposed to populate the menu there.

Tôi đã cố gắng gửi menu một thông báo update và điều đó không có hiệu lực. Đại biểu vẫn không được gọi, và thực đơn vẫn trống.

Trong trường hợp có liên quan: Menu này không có trong menu chính; nó được sử dụng ở nơi khác.

Tại sao menu không yêu cầu người được ủy quyền điền vào? Có cái gì tôi đã bỏ lỡ, hoặc là điều này chỉ bị phá vỡ?

+0

Bạn có thể dán mã của mình tại đây không. Vì vậy, chúng tôi cũng sẽ thử nó? –

+0

@hussainShabbir: Không. Mã không thuộc về tôi; Tôi đang làm một công việc hợp đồng. (Bên cạnh đó, tôi đã thay đổi nó để không dựa vào những phương pháp được gọi bởi hệ thống.) –

+0

Tôi đang có chính xác cùng một vấn đề bây giờ, và đề cập của bạn về 'menuWillOpen:' tiết kiệm thời gian của tôi rất nhiều. Đối với bản ghi, 'menuDidClose:' cũng tạo ra cùng một vấn đề ngay cả khi thiết lập thuộc tính 'enabled' của một mục menu. Điều duy nhất làm việc là 'menuNeedsUpdate:'. – Eonil

Trả lời

0

Có thể bạn cần tham khảo mạnh mẽ đối với người được ủy quyền. Thử di chuyển biến khai báo ra khỏi phương thức của bạn và tạo biến thành viên cấp lớp. xem câu trả lời này: https://stackoverflow.com/a/21816149/1664943

+0

Bạn đã bỏ lỡ phần này của câu hỏi: “Tôi đã xác nhận rằng: • Đối tượng điều khiển đã không được deallocated.” –

+0

Bạn đã có một điểm ViewMenu: ..? Nếu có - nơi nào bạn có biến Menu bị giảm tốc? Trong trường hợp của tôi, bộ điều khiển cũng KHÔNG được phân phối lại, nhưng ARC đã vô hiệu hóa tham chiếu đến đại biểu của tôi. – ThorstenC

+0

Đối tượng điều khiển mà tôi đang đề cập đến là đại biểu của menu và chủ sở hữu của nó. –

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