> On 25 Aug 2015, at 03:56, Seth Willits <sli...@araelium.com> wrote:
> 
> Naturally we're all accustomed to the pattern:
> 
> [sheet beginSheetModalForWindow:window completionHandler:^(NSInteger 
> response){
>       ...
> }];
> 
> 
> 
> But with the new "presentation" API, there's no built-in mechanism for 
> handling the sheet being closed. To have a similar pattern as before would 
> require:
> 
> 
> otherVC.completionHandler = ^(NSInteger response){
>       ...
> };
> [someVC presentViewControllerAsSheet:otherVC];
> 
> 
> 
> @implementation OtherViewController
> 
> // @property void (^completionHandler)(NSInteger response);
> 
> - (IBAction)ok:(id)sender
> {
>       [self dismissController:nil];
>       if (self.completionHandler) {
>               self.completionHandler(NSOKButton);
>               self.completionHandler = nil; // Gotta kill the likely circular 
> reference.
>       }
> }
> 
> ....
> 
> @end
> 
> 
> 
> 
> No doubt it's flexible, but it's a bit verbose. I just want to double-check I 
> didn't miss some other pattern we're supposed to be using.

Generally a delegate rather than block seems a bit neater here, but yeah, this 
seems to be the general expected approach. I figure a major advantage is that 
whatever callback system you put in place can report back far more than just a 
integer value; it can also specify an object the user selected, that sort of 
thing.


_______________________________________________

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