On 21/09/2011, at 8:54 AM, Scott Ribe wrote:
> Ah, I was thinking that the completion blocks were calling into the delegate,
> and that you needed to distinguish between panels there. So you're trying to
> distinguish earlier?
Yes, specifically, in the delegate method:
panel:validateURL:error:
Kyle's solution is working well for this situation. If it needed much more
complexity I'd probably just move the whole task into the "helper" object, but
this is fine for what I need. The only question remains whether the memory
management is safe - are there any circumstances where the completion block is
NOT called? That's where I'm releasing the helper at the moment.
that is, my code looks like this:
NSSavePanel* savePanel = [NSSavePanel
savePanel];
DKOTemplateSaverHelper* helper = [[DKOTemplateSaverHelper
alloc] initWithSavePanel:savePanel];
void (^completionHandler)(NSInteger result) = ^(NSInteger result)
{
if( result == NSFileHandlingPanelOKButton )
{
// perform the file saving task here
}
[helper release];
};
[savePanel beginSheetModalForWindow:[self windowForSheet]
completionHandler:completionHandler];
where my helper retains the save panel, sets itself as its delegate, and also
sets the panel's delegate to nil when its -dealloc method is called.
Thanks to others for the other suggestions about using the title and
subclassing the panel - either will likely work, though the title solution
seems a bit hackish, though I guess not too bad as the title is never displayed.
--Graham_______________________________________________
Cocoa-dev mailing list ([email protected])
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]