0

我在操作表上有两个按钮,当我单击一个按钮时,它将在另一个视图中显示所有学生记录。所有这些记录都需要从数据库中检索。目前我将检索记录的逻辑放在 viewwillAppear 方法中,但是当我点击按钮后,屏幕冻结了几秒钟,然后会显示学生列表。

据我了解,我检索记录的逻辑是在学生列表视图中的 viewWillAppear 方法中。单击按钮后,它应该直接进入学生列表视图,然后在学生列表视图中它会尝试加载数据。但是现在在我单击按钮后为什么它在操作表中冻结了?或者是否有任何其他地方可以放入加载记录逻辑,以便在单击按钮后它不会在上一个操作表中冻结。

4

1 回答 1

0
  1. 如果你要发布到 SO,你总是应该包含你现有的代码。我建议您相应地更新您的问题。请参阅常见问题解答

  2. 当您说它“冻结”时,我是否推断您是说在您看到带有数据的新视图之前存在延迟,但它最终出现了?如果是这样,您的任务是如何确定延迟发生的位置。因此,我建议您开始在各种方法中插入 NSLog 语句,以便确定延迟发生的确切位置。加载新视图是否需要很长时间?对于要检索的数据?等等。除非你缩小问题范围,找出延迟的根源,否则你将无法解决它。您需要培养诊断和解决问题的技能。顺便说一句,如果您仍然无法确定如何诊断代码并且 NSLog 没有帮助,您也可以参考 Apple'通过你的代码。只有在您准确地缩小了代码中问题出现的位置之后,您才应该在此处发布。

  3. 第三,大多数人在 viewDidLoad 中为他们的新视图加载数据,而不是 viewWillAppear;如果您曾经进入学生列表视图的子视图,然后又回到学生列表(即学生列表视图重新出现,即 viewWillAppear 将再次触发),您是否真的想再次加载数据,即使您已经已经加载了吗?可能不是。我知道您在加载学生列表视图后可能没有另一个要加载的视图,但您最终可能会(例如,学生详细信息视图),所以好的做法是您应该在 viewDidLoad 中加载视图的数据(这将仅在首次加载视图时触发)。

于 2012-05-04T03:25:29.560 回答