Re: NSReponder chain and controllers
Re: NSReponder chain and controllers
- Subject: Re: NSReponder chain and controllers
- From: Graham Cox <email@hidden>
- Date: Fri, 20 Jun 2008 12:02:03 +1000
Sometimes dispatching from First Responder to some other object is
necessary.
But there is an easy way to do it other than capturing each individual
message and forwarding it - just use "invocation forwarding" which
will do that automatically.
http://www.cocoadev.com/index.pl?NSInvocation
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_13_section_5.html#/
/apple_ref/doc/uid/TP30001163-CH9-SW5
hth,
Graham
On 20 Jun 2008, at 8:19 am, Robert Douglas wrote:
Thanks for the reminder about NSViewController. I make heavy use of
the NSArrayController methods but I suppose I can move most of my
code over simply by using an outlet and changing self to
myArrayController. But having two controllers simply to handle
menu actions still doesn't seems elegant, but it is better than
what I'm doing now.
-Rob
On 19-Jun-08, at 12:33 PM, Cathy Shive wrote:
NSArrayController isn't an NSResponder, so you can't add your
subclasses to the responder chain. I think the problem is that you
should be using NSWindowController and NSViewControllers to handle
menu actions, not NSArrayController. Those objects can be added to
the responder chain so you don't have to worry about dispatching
anything in your code.
On Jun 19, 2008, at 3:05 PM, Adam Knight wrote:
Add your controllers to the responder chain when appropriate and
then put the IBAction methods in the relevant controllers. If you
duplicate methods (like delete: or cancel:) take care as to what
order you add them into the chain because the first to respond
wins (though it can always send it to its next responder if it
doesn't make sense at the moment, like cancel: without an
operation running).
Adam Knight
"Every man is guilty of all the good he didn't do." -- Voltaire
On Jun 19, 2008, at 1:20 PM, Robert Douglas wrote:
My code is getting ugly so I suspect I'm doing something wrong.
I'm trying to hook up menu items in my main menu to actions that
I've defined in my controllers. I have a Core Data doc with a
multiple master-detail view hierarchy, and for testing purposes
have buttons connected to a wide variety of methods. The
NSArrayController subclasses are not in the responder chain so
I'm connecting the menu items to the first responder, catching
the action messages in my document and then dispatch them to the
correct controller. That translates into a lot of simple
dispatch code. I could move all the intelligence to the document
level but that strikes me as equally ugly. Any suggestions?
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden