我想检查粘贴板,并在 View 出现时如果它包含特定值则显示警报。我可以将代码放入 viewDidLoad
中以确保它只被调用一次,但问题是警报 View 显示得太快。我知道我可以设置一个计时器来推迟警报的出现,但我认为这不是一个好的解决方法。
我检查了问题iOS 7 - Difference between viewDidLoad and viewDidAppear发现有一个步骤来检查 View 是否存在。所以我想知道是否有任何API可以做到这一点?
更新:“仅一次”意味着 View Controller 实例的生命周期。
最佳答案
您可以使用一个标准的内置方法来实现此目的。
objective-C :
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if ([self isBeingPresented] || [self isMovingToParentViewController]) {
// Perform an action that will only be done once
}
}
swift 3:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if self.isBeingPresented || self.isMovingToParentViewController {
// Perform an action that will only be done once
}
}
当 View Controller 由于模态显示而首次显示时,对 isBeingPresented
的调用为 true。当 View Controller 首次被推送到导航堆栈时,isMovingToParentViewController
为 true。 View Controller 第一次出现时,两者之一为真。
无需处理 BOOL
ivars 或任何其他技巧来跟踪第一个调用。
关于ios - 如何在 viewDidAppear 中只执行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45749663/