2011-02-03 9 views
13

Tôi đã hỏi một vài câu hỏi về chủ đề này, và chưa thực sự nhận được câu trả lời thực sự về cách thực hiện nó (nó thực sự nhận được "Tumbleweed Badge" lol).Kết nối các mục menu trong ứng dụng dựa trên tài liệu

Tôi có một ứng dụng dựa trên tài liệu (có nghĩa là Menu.Xib tách biệt khỏi MyDocument.Xib).

Giả sử tôi muốn thêm nút 'In đậm' hoặc nút Kiểm tra chính tả (các mục được liệt kê trong Menu.xib (trong Định dạng> Phông chữ v.v.) vào MyDocument (giao diện chính) .Tôi không thể tìm ra cách làm điều này.

Bất kỳ trợ giúp sẽ được đánh giá cao (tôi sẽ thưởng cho một câu trả lời ngay lập tức nếu nó hoạt động, điều này đã bối rối tôi trong một vài tuần bây giờ).

tôi đã cố gắng thêm một quản lý Font để MyDocument.Xib và kết nối theo cách đó, nhưng nút Bold chỉ cho phép, nó không vô hiệu hóa, Plus, Kiểm tra chính tả vv không thể được kích hoạt thông qua trình quản lý phông chữ.

Phải có cách tốt hơn để làm điều này.

Tài liệu của Apple vô cùng mơ hồ.

Trả lời

17

Đây chính là điều mà đối tượng Responder đầu tiên trong IB dành cho. Nó là một đối tượng proxy để kết nối các hành động. Bất kỳ thông báo hành động nào được gửi đến nó sẽ được truyền lại chuỗi trả lời tới hàm đầu tiên chấp nhận chúng. Đối với các ứng dụng dựa trên tài liệu, chuỗi trả lời bao gồm tài liệu hiện tại. Vì vậy, để kết nối mục menu với tài liệu của bạn:

  1. Thêm hành động vào First Responder, nếu cần. Bạn có thể làm điều này từ cửa sổ thanh tra của IB.
  2. Kết nối tác vụ với First Responder như thể đó là một đối tượng bình thường.
  3. Triển khai phương thức hành động trong tài liệu của bạn.

Nếu bạn cần thêm tin nhắn cho người trả lời đầu tiên theo chương trình, hãy đặt mục tiêu của đối tượng thành nil.

+1

Khi tôi thêm 'IBAction' vào Tài liệu của mình. Tôi thấy rằng nó xuất hiện ngay trong danh sách hành động của người trả lời đầu tiên của MainMenu.xib. Điều này đã giúp rất nhiều, cảm ơn! – mtmurdock

+0

Tôi không chắc tại sao, nhưng như @mtmurdock nói, mặc dù IBAction được thực hiện bởi một lớp siêu, tôi cần xác định phương thức IBAction OWN của riêng mình, và sau đó gọi phương thức siêu lớp từ đây. Điều này là dành cho một phần mở rộng NSPersistentDocument. –

+1

@CaspNZ Những hướng dẫn này là Xcode 4, khi IB là một ứng dụng riêng biệt. Nó sẽ tự động hiển thị ngay bây giờ. Chỉ cần ghi đè lên phương thức bình thường và phiên bản của bạn sẽ được gọi, sau đó bạn có thể gọi siêu thực hiện. – ughoavgfhw