[英]Swift: how to prevent not showed UITableViewCells from being dismissed while scrolling
[英]Swift iOS -In ViewWIllAppear How to Check If ImagePicker is Being Presented or Dismissed While Switching Tabs or The View Is Being Pushed On/Off?
我有一个tabBarController,在其中一个标签中是一个名为view2的视图。 在view2中,有一些在viewWillAppear中运行的代码。 我在view2中也有一个UIImagePickerController。
fileprivate var imagePicker = UIImagePickerController()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
runSomeCode()
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage{
imageView.image = image
imagePicker.dismiss(animated: true, completion: nil)
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
imagePicker.dismiss(animated: true, completion: nil)
}
我意识到,每次呈现imagePicker然后将其关闭,然后在viewWillAppear runSomeCode()内部运行。 我不希望它继续被打电话。
我最初在下面使用此代码,但我意识到viewWillAppear中的代码仅在view2被按下时才运行。 如果我切换标签并返回,它将无法运行。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if (isMovingToParentViewController) || (isBeingPresented){
runSomeCode()
}else{
//runs when switching tabs but also runs after the imagePicker is dismissed
}
}
如何检查是否正在显示或关闭imagePicker,以使我的viewWillAppear中的代码无法运行?
即使接受了so链接的答案有效,我仍然发现了一些简单的方法。 有了接受的答案,您必须检查是否已将视图推入并通过使用bool值和TabBarDelegates的选项卡开关显示了该视图。 它可以工作,但是需要很多工作。 我主要关心的是在显示或关闭imagePicker时代码未运行。
在viewWillAppear中使用此imagePicker测试时, runSomeCode()
仅在按下视图时运行,并且有一个选项卡从另一个选项卡切换回该视图,但在imagePicker被呈现或关闭时不会运行:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if imagePicker.isBeingDismissed == false{
runSomeCode()
}
}
这就是您将如何在viewWillDisappear中获得相同的效果。 runSomeCode()
仅在弹出视图时运行,并且有一个选项卡从该视图切换到另一个选项卡,但在imagePicker显示或关闭时它将不运行:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if imagePicker.isBeingPresented == false{
runSomeCode()
}
}
通过实现UITabBarControllerDelegate
解决了类似问题的答案 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.