The recommended way to do this would be to use a delegate from your modal view controller back to the view controller that opened the view. Check out the official docs for examples.
The reason that this is the recommended way is so that the ViewController that originally started the modal will also be in control of dismissing it.
It is really simple to do and think more elegant that than using viewWillDisappear - as there are other reasons why view could dissapear!
create a protocol on your modal ViewController - xViewControllerDelegate
@protocol xViewControllerDelegate
- (void) modalDialogFinished;
@end
Then make your parent implement the delegate using the <xViewControllerDelegate>
when you define your parent view controller.
You will be forced to have a method called modalDialogFinished in your parent view controller - which can handle dismiss command and the refresh etc.
Remember to pass anid<xViewControllerDelegate>
into the modal view controller in your init code and store it as a field on the object.
When you want to disssmiss your modal view then you just need to reference the delegate.modalDialogFinished.
If this doesn't make sense then I can point you to some better example code - but I hope using delegates is not new to you.
UPDATE::
Here is the official Apple documentation on how to do this for a modal view controller:
http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html