I am putting together an application which keeps track of competitors in a running event. Data is stored using core data. I have a competitor entity and an event entity, with a to-one relationship called subevent in my competitor entity. I wish to list competitor information in a table, with an associated detail view using array controllers and bindings. I would like the detail view to have a popup button showing the current event that competitor is entered in, with the ability to change event. How do I detect when the event has changed, but before it actually changes, so that i can get the user to confirm that the change should be made? I also need to know details of the old event, as I have to keep a record of the old event and registration number and the new event and registration number (which I have to allocate when the change is made) as well as dealing with the financial consequences of the change (make refund, charge more). My thinking is that I have to intercept the change in the popupbutton menu before it takes effect, but I can't see how I do this.