我应该使用 didSelectRowAtIndexPath、prepareForSegue 还是两者兼而有之?



我正在构建一个向用户呈现UITableView的应用程序,用户需要从中进行选择。 一旦选择了一行,它们就会看到另一个视图控制器,该控制器显示他们在上一个视图控制器上所做的选择的详细信息。

这里有一个问题:用户做出选择后,应用需要调用网络以检索要在下一个 ViewController 上显示的一些数据。 我计划从 prepareForSegue 方法调用一个方法,该方法将从网络调用返回结果,然后调用相应的 ViewController,但我想知道这是否应该从"didSelectRowAtIndexPath"方法(我还没有实现)调用。

我担心的是,在对网络的调用返回我需要显示的数据之前,第二个视图控制器将被调用。 这甚至是放置此类网络调用的地方,还是我应该从目标 ViewController 的"viewDidLoad"方法进行此调用? 什么是最好的架构,为什么?

didSelectRowAtIndexPath方法中调用prepareForSegue方法以导航到secondViewController,然后显示详细信息,在secondViewController的viewDidLoad方法中进行网络调用并显示activityIndicatorView,直到获取数据。

我会使用一些从prepareForSegue开始并在详细信息视图中管理的异步加载。出现详细信息视图后,您必须通知用户正在加载某些内容(存在适当的转轮),然后在加载完成后填充界面(或管理加载错误)。

但是使用viewDidLoad详细信息视图也可以,前提是您始终通知用户当前加载...

不要使用didSelectRow因为它只是为了选择...表视图单元格上不能有导航!

异步是首选,因为它不会阻止处于某种奇怪状态的用户等待他真正知道的东西。

相关内容

最新更新