Re: Blocking while a save panel sheet is showing
Re: Blocking while a save panel sheet is showing
- Subject: Re: Blocking while a save panel sheet is showing
- From: Kenneth Baxter <email@hidden>
- Date: Mon, 14 Feb 2011 13:09:13 +0000 (GMT)
Thanks for the reply Graham. It sounds as if I would have to have control over the framework to do as you suggest, but I don't have access to the framework source.
My understanding of what the framework does is:
[delegate saveData];
if (dataHasBeenSaved) {
do stuff
} else {
do different stuff
}
So if my delegate method saveData uses the sheet to save, it will return from the saveData method immediately, no matter what I do. I do have the file saving code in the completion block of the sheet, but by then it's too late - the framework thinks the data wasn't saved.
I'm afraid I can't see a way to refactor that so that saveData doesn't return until the save operation is complete, and I can't see how the framework could work properly without waiting for the completion of the save operation.
Maybe I'm missing something obvious about the way this is supposed to work (I'm still rather new to all this), or some other option. I did try to have a look at the document saving system, since it seems to be able to wait for the open documents to be saved on quit before deciding if the application should quit, but I didn't fully understand that, and I think it may operate in a different way than what I need.
Regards
Ken
PS sorry about the double posting before - I'm using the web version of mobile me at the moment, and it seems to screw up every time I use it :(
On 14 Feb, 2011,at 10:12 PM, Graham Cox <email@hidden> wrote:
You need to factor your code so that you don't require the sheets to "block". That isn't how they work. Instead, while the sheet is displayed, the event loop is run normally and will run the sheet modally while running everything else (like other documents) as normal. The user can switch away from the document displaying the sheet and come back to it later if they want.
The point is that when the sheet ends (the user clicks OK or Cancel) the completion method (or block) is run, and it is this code that does the actual file saving. The purpose of the sheet is not only to choose the file name and location but to trigger the save itself. Rearranging your code so that the file save is triggered in this way should be straightforward - just call the save method from the sheet's completion method.
--Graham
_______________________________________________
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