Установка свойств пользовательского интерфейса для UINavigationBar, не работающего для iOS 13, при обходе между контроллерами представления - PullRequest
0 голосов
/ 18 марта 2020

Проблема указана c для iOS13. Я использую два контроллера представления, назначил первый V C (контроллер представления) как rootViewController. Для первого V C свойства панели навигации установлены следующим образом:

- (void) viewWillAppear:(BOOL)animated{
        self.view.backgroundColor =  [UIColor whiteColor];

        self.navigationItem.title = @"VC1";
        self.navigationController.navigationBar.barTintColor = [UIColor greenColor];
        self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
             [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
             [UIFont fontWithName:@"AmericanTypewriter" size:20.0], NSFontAttributeName,
        nil];

    UIButton *nxtFormBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 100, 100, 50)];
              [nxtFormBtn setTitle:@"go to VC2" forState:UIControlStateNormal];
              [nxtFormBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
              [nxtFormBtn setBackgroundColor:[UIColor grayColor]];

              [nxtFormBtn addTarget:self action:@selector(travelToNextForm) forControlEvents:UIControlEventTouchUpInside];
              [self.view addSubview:nxtFormBtn];

}
-(void)travelToNextForm{
    self.vc = [[ViewController2 alloc]init];
    [self.navigationController pushViewController:self.vc animated:YES];
}

В VC2 (view controller2) я использую UINavigationBarAppearance для настройки свойств navigationBar как такового:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title = @"VC2";
    UINavigationBarAppearance *navAppr = [[UINavigationBarAppearance alloc]init];
    [navAppr setBackgroundColor:[UIColor blueColor]];
    [navAppr setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
         [UIColor colorWithRed:220.0/255.0 green:0/255.0 blue:1.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
         [UIFont fontWithName:@"AmericanTypewriter" size:20.0], NSFontAttributeName,
    nil]];

    self.navigationItem.standardAppearance = navAppr;
    self.navigationItem.scrollEdgeAppearance = navAppr;
    self.navigationItem.compactAppearance = navAppr;
}

Проблема в том, что когда я нажимаю кнопку «Назад» на панели навигации, чтобы вернуться к VC1, свойства панели навигации отключаются, и кажется, что применяется внешний вид по умолчанию. То, что я хочу, это тот же внешний вид, который будет применен к панели навигации VC1, перед поездкой в ​​VC2. Прикрепление снимков экрана для справки:

Первый запуск VC1

VC2_UINavigationBarAppearance_used

VC1_from_VC2_properties_reset_to_deaf *

...