ios - 仅当 View 首次显示时才在 viewDidAppear 中执行操作

标签 ios xcode swift

我有一个应用程序,其 View 包含 4 个用 UIBezierPath 制作的圆圈。

view with circles

你可以点击某个圈子来获取其中一个项目的详细信息

view with details

问题是,圆圈位于有一些约束的 subview 中,所以我无法在 viewDidLoad 方法中绘制它们(我尝试过但很乱)所以整个绘制过程是在 viewDidAppear 方法中完成的,但这使得每次出现 View 时要绘制的圆圈。

所以如果我点击一个圈子然后返回到圈 subview 很多时间我最终会得到:

view with circles after I went to check the details a lot for any circle

我还尝试使用 viewDidLayoutSubviews 方法,但出现无限循环。所以我想问是否有人有解决这个问题的想法。 (以最干净的方式)

这就是我的 viewDidAppear 的样子:

override func viewDidAppear(animated: Bool) {
        createCircle(firstCircle, text: "Breathe", color: blue, directionForAdjustment: 1, identifier: 0)
        createCircle(secondCircle, text: "Cocoon", color: green, directionForAdjustment: 1, identifier: 1)
        createCircle(thirdCircle, text: "Smokeless", color: cyan, directionForAdjustment: -1, identifier: 2)
        createCircle(fourthCircle, text: "Sleep", color: purple, directionForAdjustment: -1, identifier: 3)
}

最佳答案

如果您希望此代码仅在 View 第一次出现时执行,只需添加一个表示“已初始化”的 bool 变量。如果不在 viewDidAppear 中运行代码,则将其设置为 true。

关于ios - 仅当 View 首次显示时才在 viewDidAppear 中执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37807627/

相关文章:

xcode - iOS 共享扩展无法与react-native 0.61.5 一起使用

ios - UITableViewController loadView 加载了 "xxx-view-xxx"nib 但没有得到 UITableView

iOS Metal API 在体积内绘制 3d 纹理

ios - Flutter中的新Podfile格式-如何实现与以前相同?

ios - 如何将此文本分配给 iPhone SDK 中的标签

ios - 使用 NSTimer 从服务器刷新数据

ios - Swift - 将渐变设置为 UITableView 部分背景

ios - 如何在 iOS 7 上的三个 ViewController 之间使用 Core Data 传递数据

objective-c - 在存在新 API 时构建向后兼容的 OS X 应用程序?

swift - 使用自定义相机拍照 iOS 11.0 Swift 4.更新错误