Общие элементы управления между представлением UITabBarController

В настоящее время я разрабатываю свое первое приложение для iOS, и пока все идет отлично. Однако теперь я хочу разработать функцию, которая немного более продвинута, и я понятия не имею, как действовать дальше.

Мое приложение использует Core Data и TabBarController для переключения между разными NavigationControllers.

Теперь я хочу реализовать Subview для каждого контроллера навигации, который показывает метку и две кнопки. Метка является индикатором таймера, а две кнопки должны запускать и останавливать таймер и сохранять немного данных, если таймер остановлен. Этот Subview должен быть непрерывным между вкладками, поэтому я хочу сохранить таймер и состояние кнопок.

Моя идея состояла в том, чтобы создать xib и загрузить этот xib на сам TabBarController, однако я не знаю, как это сделать.


person Daniel Stein    schedule 12.07.2014    source источник
comment
почему одинаковый вид на всех навигационных контроллерах? Какая-то конкретная причина? Для решения вы можете создать одноэлементный экземпляр контроллера представления и связать его со всеми вашими навигационными контроллерами, но на самом деле это противоречит цели контроллера панели вкладок.   -  person rishi    schedule 12.07.2014
comment
Если я запускаю таймер, метка должна начать отображать таймер, и если я хочу переключить навигационный контроллер, я хочу по-прежнему иметь возможность видеть это отображение таймера и иметь возможность запускать и останавливать его.   -  person Daniel Stein    schedule 12.07.2014
comment
Вы создали свой класс контроллера панели вкладок? или все связаны из раскадровки.   -  person rishi    schedule 12.07.2014
comment
Я связал все вместе в раскадровке.   -  person Daniel Stein    schedule 12.07.2014
comment
Проверьте это- stackoverflow.com/questions/17748899/   -  person rishi    schedule 12.07.2014


Ответы (1)


Я бы создал таймер в подклассе контроллера панели вкладок; в любом случае это своего рода синглтон, и он должен присутствовать на протяжении всей жизни прогона. Если вы создадите там свойство, я назову его «счетчик», вы можете наблюдать за ним в своих контроллерах контента, чтобы обновить свою метку,

- (void)viewDidLoad {
    [super viewDidLoad];
    [self addObserver:self forKeyPath:@"self.tabBarController.counter" options:NSKeyValueObservingOptionNew context:nil];
}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    NSString *s = [NSString stringWithFormat:@"%@",(NSNumber *)[change valueForKey:@"new"]];
    self.label.text = s;
}

Вам понадобятся методы в контроллере панели вкладок для запуска и остановки таймера, который можно вызывать с помощью кнопок в контроллерах содержимого. Что касается представления с меткой и кнопками, я бы не стал добавлять его в контроллер панели вкладок, я бы добавил его в каждый из контроллеров контента. Если вы разрабатываете представления в раскадровке, вы можете поместить их в один контроллер, а затем скопировать и вставить в любые другие, которым это нужно.

person rdelmar    schedule 12.07.2014
comment
Идея с таймерами кажется дельной, завтра попробую. Спасибо. - person Daniel Stein; 13.07.2014