UITabBarController
имеет свойство viewControllers
, которое является массивом контроллеров отображения отображенных (по индексу на закладке позиции, но вы, вероятно, это не нужно). Одним из простых решений является то, что ваш подкласс UITabBarController получает данные, он может перемещаться по массиву viewControllers и проверять каждый из них на соответствие/ответ на селектор и соответственно обновлять.
Это, наверное, самый простой. Другим способом было бы иметь контроллеры представлений в регистре вкладок для обновлений. Таким образом, они соответствуют протоколу делегатов и получают ссылку на их контроллер панели вкладок (подкласс контроллера панели вкладок) и вызывают панель вкладок с надписью «наблюдать обновления». Контроллер панели вкладок сохраняет память зарегистрированных объектов наблюдения и вызывает каждый из них новыми данными.
Предполагается, что вы устанавливаете контроллеры просмотра вкладки в IB. Если вы делаете это программно, то со вторым вариантом вы можете просто привязать вкладки к контроллеру панели вкладок, когда вы их добавите. Если вы установите в IB, вы также можете сделать это, переопределив -prepareForSegue
, поскольку вложение вкладок в корне рассматривается как segue, но вам все равно придется отбрасывать destinationViewController
, поскольку любой подкласс может получать данные.
Первый вариант достаточно прост, и хотя мне не нравится кастинг, неизбежно использовать то преимущество, что нужные вам ссылки. Кроме того, на самом деле будет только однозначное количество вкладок, поэтому оно не может стать дорогостоящим. Надеюсь это поможет.
Как я понимаю, вы получаете целые данные на первой вкладке, я опубликовал пример, просто посмотрев и дайте мне знать, если есть какая-либо проблема. – vaibhav
PLease показать, что вы пробовали. Вам необходимо установить модель данных, которая передает данные всем контроллерам. –