Использование тегов для разграничения навигационных контроллеров нормально. Чтобы сделать код более читабельным и избежать возможных ошибок, вы можете определить теги как константы или перечисления и проверить значение константы.
Другой способ заключается в создании подкласса UINavigationController для каждого случая и проверке на соответствующий класс:
if let navController = navigationController as? CustomNavigationController {
//your code
}
Подклассификация добавляет к шаблону и делает проект больше. Поэтому, если вам не нужно настраивать каждый контроллер навигации, вы можете продолжать использовать теги.