-1

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 内で起動された実際のデバイスで正しく動作します。私は回避策や提案を受け入れます。

4

1 に答える 1