Динамически изменяемый navigationController.navigationItem.rightBarButtonItems - PullRequest
0 голосов
/ 26 марта 2019

При использовании splitViewController вы, вероятно, будете иметь detailViewController (UIViewController) и rootViewController (UINavigationController), где вы можете установить собственный массив UIBarButtonItem.После создания некоторых пользовательских изображений, одно из которых является значком, который изменяется при наличии сохраненных push-уведомлений, я считаю, что изменить значок, пока он видим, необычайно сложно.

-(void)seNavbarItems {
     UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

     UIBarButtonItem *logout = [UIUtility createBarButtonItemWithImage:@"logout.png"];
     [logout.customView addTarget:self action:@selector(logout:) forControlEvents:UIControlEventTouchUpInside];
     self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:logout,flexibleSpace,nil];

     UIImageView *home = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"title.png"]];
     self.navigationItem.titleView = home;

     UIBarButtonItem *settings;
     if([UIApplication sharedApplication].applicationIconBadgeNumber > 0) {
          settings = [UIUtility createBarButtonItemWithImage:@"settings_alarm.png"];
     }
     else {
          settings = [UIUtility createBarButtonItemWithImage:@"settings.png"];
     }

     [settings.customView addTarget:self action:@selector(settings:) forControlEvents:UIControlEventTouchUpInside];
     self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:settings,flexibleSpace,nil];
}

Точки останова внутри applicationIconBadgeNumber, когдаожидается, но значок не меняется.Если я перемещусь вперед или назад, значок настроек изменится, как и ожидалось.Мне известно о dispatch_async (dispatch_get_main_queue (), ^ {..run setHomeNavbar метод ..}); потоковый подход, но, похоже, тоже не работает.

Есть лиспособ изменить свойство rightBarButtonItems без нажатия / нажатия rootViewController?Если у меня есть действие [appDelegate seNavbarItems]; , которое происходит в detailViewController, почему я не могу обновить rightBarButtonItems, отображаемое в rootViewController, с помощью кода выше?

...