Xcode 8で作成された大規模なアプリがあります(古い学校です)。すべてのコントロールはコードで作成されています。
IOS 13 / Xcode 11.3 に移行してから、VC デリゲートがナビゲーション コントローラーにプッシュされた後、popToRootViewController が呼び出された場合、rootViewController viewWillAppear は呼び出されません。
私は使用しようとしました
VC.modalPresentationStyle=UIModalPresentationFullScreen 動作に変更はありません。
ウィンドウを含む MainWindow.xib があり、navController がサブビューとして設定されています
AppDelegate.m で:
mainVC = [[MainViewController alloc] init];
selectSomethingVC=[[SelectSomethingViewController] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:mainVC];
[window addSubview:navigationController.view];
[window setRootViewController:navigationController];
[window makeKeyAndVisible];
MainViewController で
- (IBAction) selectSomethingButtonPressed:(id)sender
{
AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[self.navigationController pushViewController:[del selectSomethingVC] animated:YES];
}
SelectSomethingViewController で
- (IBAction) cancelButtonPressed:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:true];
}
このコードは、以前の Xcode バージョンと IOS 10 で正常に動作し、viewWillAppear 内のコードが実行されます。これは、アプリの操作に不可欠です。シミュレーターと実際のデバイスの両方で、以前の IOS と Xcode で。
IOS 13 と Xcode 11.3 では、シミュレーターは viewWillAppear を呼び出しませんが、奇妙なことに、IOS 13 を実行し、テスト デバイスとして Xcode 内で起動された実際のデバイスで正しく動作します。私は回避策や提案を受け入れます。