ios - IOS 中的 viewDidLoad 与 ViewWillAppear

标签 ios swift uiviewcontroller

请帮我解决这个问题。如图所示,我创建了一个具有两个 View 的简单项目。我附上了 Storyboard和 swift 文件的图像。所以,我读到 viewdidload 在将 View 加载到内存中时只会执行一次。但是,当我从第二个 View 转换到第一个 View 时,viewdidload 再次执行,viewdidload 方法中的打印语句也是如此。

有人请给我解释一下。 enter image description here enter image description here

最佳答案

viewDidLoad 不会为应用程序调用一次。当 View 保存内存并加载时,它会为该 viewController 调用一次。

所以你推送到 viewController 的次数越多,它就会调用 viewDidLoad

  • viewDidLoad() — 当 View Controller 的内容 View (顶部 它的 View 层次结构)被创建和加载

  • viewWillAppear() — 用于您希望始终执行的任何操作 在 View 变得可见之前发生。

有关此内容的更多信息,请查看链接:https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html

所以如果 View 已经在内存中(像你的情况),那么不需要再次推送,只需要通过这段代码弹出

self.navigationController?.popViewControllerAnimated(true)

关于ios - IOS 中的 viewDidLoad 与 ViewWillAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40211547/

相关文章:

从内存中删除 UIView 时,swift deinit 方法不起作用

ios - Mac 上的 Corona 音频错误? audio.setMaxVolume( ) 在 mac 上不工作?

swift - 按下远程通知时打开 View Controller

iOS:在 UIViewRepresentable 和 View 之间进行函数调用,SwiftUI

swift - UITextfield 键盘外观的扩展

ios - 如何在 UITableView 上添加额外的行分隔符

iphone - iOS 在单击按钮时加载全新的 View

ios - 如何将数据从基于 plist 的 UITableView 传递到 UIViewController

iphone - 如何在 objective-c 中将gps north和gps west转换为lat/long

iphone - NSMutableOrderedSet和NSNull行为?