在这种情况下我应该使用导航控制器吗?

Should I use a navigation controller in this scenario?

所以我正在构建一个简单的聊天应用程序。我将有一个登录屏幕,注册并稍后在 UITableViewController 上显示好友列表。我不确定我是应该为此使用 UINavigationController 还是只使用 UIViewControllers。以下是潜在设置的两张图片:

和:

我只是想知道使用导航控制器通常是更好的做法吗?我也对弹出视图控制器时会发生什么感到困惑。 [self.navigationController popViewControllerAnimated:YES]; 是否将视图控制器保留在内存中以便稍后再次访问或者是一个新的每次创建一个?同问[self dismissViewControllerAnimated:YES completion:nil],这是破坏控制器还是存储起来备用?谢谢

我想你会坚持UINavigationViewController。只是因为登录和注册属于您的用户管理。从 UX 的角度来看,如果您要呈现的场景与当前场景不相关,则最好使用 Modal。因此,根据您的情况选择 UINavigationViewController

第二个问题是关于内存管理的。这有点像引用计数。如果你有东西要引用 UIViewController,它的引用计数不会降为零,这意味着系统不会清理它。所以,你还有办法得到。如果您只是简单地弹出或关闭它而不引用它。引用计数将变为零,系统将对其进行清理。

我会就何时使用导航控制器给出我的意见。

如果您的应用需要以分层方式呈现其内容 (Master/detail),则使用 UINavigationController 是很常见的。

如果您需要呈现一些与呈现内容不严格相关的内容,您可以在其之上使用新的视图控制器来呈现它。

关于内存,一旦您不保留对控制器的任何引用,一旦移除(弹出/关闭),您就会丢失对它们的任何引用,因此不会在内存中使用 space

注意:如果你只想显示一个不需要分层导航或导航栏的视图控制器,那么你不需要使用一个 UINavigationController.

但在这种情况下,我仍然建议使用 UINavigationController,因为您的用例(登录流程)可以使用导航流程完全解决。

在内存方面现在有所不同。在这个问题上随意使用它们中的任何一个。尽管这些观点的呈现方式有所不同。