пара вещей ...
Во-первых, в вашем методе networkStatusDidChange
вы создаете новый headerView
каждый раз - независимо от состояния доступности сети.Возможно, вы захотите: а) создать headerView
только тогда, когда вы действительно хотите показать его;и б) создайте его, только если вы этого еще не сделали.
Во-вторых, я уверен, что вставка представления с индексом 0 помещает его внизу.Вместо этого вы можете просто addSubview
в первый раз, а затем позвонить bringSubview(toFront:)
на него, когда вы захотите показать его снова.
Если ваше требование, чтобы каждый VC мог отображать сообщение о состоянии, нетне слишком строг, вы можете захотеть рассмотреть альтернативу, и причина, по которой я привожу это, состоит в том, что я не уверен, насколько хорошо этот подход играет с созданием других контроллеров представлений / представлений - т.е. что происходит с сообщением о состоянии, когда новыйview помещается на контроллер навигации, или пользователь выбирает другую вкладку в вашем приложении (я понятия не имею о вашем приложении, поэтому я просто предоставляю примеры).
Если это имеет смысл для вашего приложения, вытакже может создать выделенный подкласс UIViewController
для отображения статуса (вместо расширения, к которому может иметь доступ любой контроллер представления ).Затем настройте иерархию контроллера представления в своем приложении - например, если ваше приложение является приложением панели вкладок:
AppRootViewController
YourTabBarController
YourNetworkStatusViewController
Net status vc может добавлять / удалять свое представление по мере необходимости в ответ на работу сетиизменения доступности.Преимущество заключается в разделении интересов - только один VC знает о показе состояния сети, а все остальные ваши контроллеры представления остаются независимыми от него.