Use a UIPopoverController
, like it is used in native applications.
self.popover = [[UIPopoverController alloc] initWithContentViewController:referenceLibraryVC];
[self.popover presentPopoverFromRect:[sender frame] inView:[sender superview] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
You will need to retain the popover controller until it is dismissed. Set the delegate and you can listen when it is dismissed so you can release it.