On 8 May 2012, at 11:11 AM, ecir hana wrote:

> please, could you clarify one thing for me? In document-based apps, if I
> were to implement my own document controller, how would I trigger the
> saving of a file? In other words, in menu there is an item which fires
> "saveDocument:" and in document there is a method "saveDocument:" - how
> does the action travels through document controller? In yet another words:
> 
> (Menu) saveDocument: -> (Document controller) ? -> (Document) saveDocument:
> 
> Do I have the picture right? Is it ok to write something like (in the
> controller):
> 
> - (void)saveDocument:(id)sender {
>    [[self currentDocument] saveDocument:sender];
> }
> 
> I think I just need to pass "saveDocument:" from the menu to the document,
> am I right?

I'll get this wrong if I answer in the amount of time I have. Look up 
"responder chain" in the Mac OS X documentation.

To oversimplify:

Menu commands typically go to the "first responder" — whatever has the UI 
focus. If the focused object doesn't implement the menu item's method, the 
event system shops the event up a logical hierarchy called the "responder 
chain" (e.g. text field -> window -> document -> application) until it finds an 
object that does implement the command. The first object that implements the 
command executes it.

File > Save Document sends saveDocument: to the first responder. Because the 
chain goes from bottom up, the saveDocument: message arrives at the document 
object directly, without mediation from the application's document controller.

        — F


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to