Я почти уверен, что UINavigationItemView не имеет PlayStateChanged :. Следовательно, если это работает в первый раз, а позже - нет, сначала должен быть экземпляр другого класса, который позже исчезает и заменяется экземпляром UINavigationItemView - классического перевыпуска / недостаточного сохранения.
Вероятно, вы также не отменяете регистрацию наблюдателя для наблюдения в dealloc или viewDidUnload.