On Jun 25, 2008, at 12:12 PM, P Teeson wrote:

Environment is Mac OS X 10.4.11 Xcode 2.5

I need a new type of NSButton/NSButtonCell that I am calling an NSLatchButton. Once it is pushed it stays pushed - pushing it again does not revert it back to unpushed state. (Of course there would be a method to set it to it's unlatched state but pushing the button would not
invoke that action)

However I'm not sure how to approach this. Should I use categories, extensions, or subclass or what?

Is this something are going to use in one place only, or is this something you foresee using in a lot of different places?

If this is something that's a one off control, I'd probably put the logic in the IBAction rather than subclassing. If you need to use this a lot of different places/projects then it's probably worth subclassing. I don't think you can accomplish your goal using categories (wrong tool).

In terms of what you need to override that would take some experimentation and thinking. Couple options come to mind- you might try overriding "setState:" and eating any state changes after the first. You could also go after the responder chain- possibly in "mouseDown:".

Other peoples comments about this being a "Controller" problem and not something that belongs in the Model are somewhat true, but if this is really a button type your going to use in several places then subclassing is perfectly appropriate. Also, if it's important to you that the user not get any click behavior (that is, once the button has been "set" then clicking on it again has no visible effect on the control), then I don't think you'll be able to get what you want without subclassing.


_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to