UINavigationController‘s implementation of init(rootViewController:) probably calls self.init(nibName:bundle:) which you haven’t implemented so it throws the error.
You should override init(nibName:bundle) in addition to the initializers you already override. init(nibName:bundle:) is a designated initializer while init(rootViewController:) is a convenience initializer.