Well there's no way to get didPopItem to be called without setting the nav bar's delegate property. I haven't found where the docs explicitly say you can't set the bar's delegate, but the UINavigationController reference says this:
+Although, navigation controller uses a navigation bar in its implementation, you should never need to, nor should you, access the navigation bar directly. You can, however, access the navigation items that represent the appearance of your view controllers.+
I made a test bed to verify this and found that when I set a controlled tab bar's delegate property in either code or IB, I get a run time crash. For example, this code added to the NavBar sample app will crash:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// add the navigation controller's view to the window
[window addSubview:[navigationController view]];
UINavigationBar *navBar = [navigationController navigationBar];
MainViewController *mainViewController = (MainViewController*)[navigationController topViewController];
// how can we set the delegate if we don't "access the navigation bar directly"?
[navBar setDelegate:mainViewController];
[window makeKeyAndVisible];
}
2009-04-02 12:57:49.119 NavBar[53368:20b]
* Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot manually set the delegate on a UINavigationBar managed by a controller.'
I've found that answering questions with bad news is a thankless job 😟 but bottom line: No, there's no way to trap the event when we have a nav controller.