- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我不明白为什么 UIView 的 removeFromSuperview
调用 didMoveToSuperview
。
我认为 didMoveToSuperview
仅在将 View 添加到 View 时调用。谁能解释为什么 removeFromSuperview
调用 didMoveToSuperview
?
这是我在 removeFromSuperview
中所做的:
public override func removeFromSuperview() {
clearDelegates()
chaosPad?.removeFromSuperview()
brushSliders?.removeFromSuperview()
moodSlider?.removeFromSuperview()
brushShapeMenu?.removeFromSuperview()
moodMenu?.removeFromSuperview()
gravityMenu?.removeFromSuperview()
rotationMenu?.removeFromSuperview()
menuGroups = []
centerButtons = []
scrollMenuItems = []
menu?.removeFromSuperview()
menu = nil
super.removeFromSuperview()
}
func clearDelegates() {
chaosPad?.delegate = nil
viewController = nil
}
这里是显示如何调用 didMoveToSuperview
的调用堆栈:
#0 0x0000000110f39708 in specialized _fatalErrorMessage(StaticString, StaticString, StaticString, UInt) -> () ()
#1 0x000000010b9cb960 in TDTOilistMenuPainting.configureFrames() -> () at /FastDev/TDTPhotoLib/Oilist/Classes/TDTOilistMenuPainting.swift:161
#2 0x000000010b9cb83e in TDTOilistMenuPainting.didMoveToSuperview() -> () at /FastDev/TDTPhotoLib/Oilist/Classes/TDTOilistMenuPainting.swift:146
#3 0x000000010b9cb872 in @objc TDTOilistMenuPainting.didMoveToSuperview() -> () ()
#4 0x000000010f5d1db5 in __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke ()
#5 0x000000010dc87c60 in -[NSISEngine withBehaviors:performModifications:] ()
#6 0x000000010f5d19b1 in -[UIView(Hierarchy) _postMovedFromSuperview:] ()
#7 0x000000010f5cf610 in __UIViewWasRemovedFromSuperview ()
#8 0x000000010f5cf107 in -[UIView(Hierarchy) removeFromSuperview] ()
#9 0x000000010b9c9aba in TDTOilistMenuPainting.removeFromSuperview() -> () at /FastDev/TDTPhotoLib/Oilist/Classes/TDTOilistMenuPainting.swift:73
#10 0x000000010ba6d269 in TDTPaintingViewController.(navigationController(UINavigationController, animationControllerForOperation : UINavigationControllerOperation, fromViewController : UIViewController, toViewController : UIViewController) -> UIViewControllerAnimatedTransitioning?).(closure #2) at /FastDev/TDTPhotoLib/Oilist/Classes/TDTPaintingViewController.swift:2706
最佳答案
这是正常行为。 didMoveToSuperview
会在 View 的父 View 发生更改时被调用,即使它更改为 nil
。您可以在该方法中检查父 View 是否为 nil 以确定它是否已添加到其父 View 或从其父 View 中删除,例如:
override func didMoveToSuperview() {
if let superview = self.superview {
// the view was added as a subview to superview
}
else {
// the view was removed from its superview
}
}
关于ios - UIView removeFromSuperview 正在调用 didMoveToSuperview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580759/
我确信这是一些愚蠢的错误,但在过去的一个小时里我试图从我的 super View 中删除 subview ,但没有成功。 在我第一次观看时 UIViewController *helpView = [
我不知道如何描述正常场景,调用removeFromSuperview时会导致0.3%崩溃。 这是跟踪: Exception Type: SIGSEGV Exception Codes: SEGV_AC
我在 tvOS 项目中有此代码 var loader: UIViewController! 。 。 . override func viewDidLoad() { super.viewDidL
我有一个带有后退按钮的页面,可以将我带到收件箱。我在 viewWillDisappear 中执行此操作 - -(void)viewWillDisappear:(BOOL)animated { [sup
我添加了多张图片并缩放显示它们。由于内存大小有限,我应该尝试删除其中一些已经通过 removeFromSuperview 看到的内容。我的问题是,当我尝试缩放时,所选图像被 removeFromSup
我有一个从 xib 加载的 UIView 子类,如下所示: // The xib custom view private var view: UIView! override init(frame:
我有以下类来添加和删除事件指示器 View : import Foundation import UIKit class ViewControllerUtils { var container: UI
另一个让我头疼的问题。我以编程方式创建了一个 UIButton。它的唯一目的是站在另一个已按下半秒钟的按钮之上。底部按钮是图片,顶部按钮是垃圾桶。您可以在这里看到我正在尝试做的事情:我有一张图片,要删
我在用 Objective-C 编程对象时有一个小问题。我有一个即将完成的应用程序,一切正常。我的问题是我将我的对象设置为 nil 并在适当的时候释放它们。 但这足够了吗?我应该在何时何地使用 rem
我有六个 ImageView ,我这样设置它们: img1 img2 img3 img4 img5 img6 但是当我使用 removeFromSuperview 函数删除 img1 时,其他 Ima
我有一个 MBProgressHUD,我分配如下: self.progressHUD_ = [[[MBProgressHUD alloc] initWithView:self.view] autor
在使用 imagePickerController 选择图像后,我尝试使用 Core Data 从我的 ViewController.swift 中保存一个对象。我在保存时显示带有微调器的 View
我声明了一个名为 var progressBar 的 UIView 变量:UIView? 我用这个函数显示或隐藏 View func showProgressBar(showBar: Bool){ i
我想在询问触摸 ID 时模糊背景,一旦授权成功,viewcontroller 需要可见。但这没有发生。即使授权成功,viewcontroller 仍然模糊。谁能帮我如何解决这个问题? import U
我需要能够从 View 中删除一个按钮并添加一个不同的按钮。我的代码如下所示: -(void)UpdatePromoBanner:(NSString*)value{ [button setTi
我想制作从 subview 返回到 super View 的动画。 我使用以下方式显示 subview : [UIView beginAnimations:@"curlup" context:nil]
我有一个方法,可以对 UIWindow 的一个 subview 进行动画处理,然后使用 removeFromSuperview 将其从 UIWindow 中删除。但是当我将 removeFromSup
我正在尝试使用以下代码从现有 View 中删除图像: -(void) deleteImage:(int)imageID{ //[self.imageArray removeObjectAtIndex:
我目前正在做一个 ipad 项目并找到了这个。所以这是我的结构 我将 uiviewcontroller 子类化为 customizedVC,像这样 @protocol customizedVCDele
我正在使用 GADBannerView 来展示横幅广告。这是我加载广告的方式: override func viewDidAppear(_ animated: Bool) { supe
我是一名优秀的程序员,十分优秀!