首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

调用removeFromSuperView()后无法删除SubView(nib)

调用removeFromSuperview()后无法删除SubView(nib)的问题可能是由于以下原因导致的:

  1. 引用计数问题:在调用removeFromSuperview()之后,如果没有其他地方对该SubView进行引用,那么它的引用计数会减少,可能会被释放。如果你仍然持有对该SubView的引用,那么它不会被释放,从而无法完全删除。

解决方法:确保在调用removeFromSuperview()之后,不再持有对该SubView的引用。可以通过将引用设置为nil或使用weak引用来解决。

  1. 重复调用removeFromSuperview():如果多次调用removeFromSuperview(),可能会导致问题。因为第一次调用已经将SubView从父视图中移除,再次调用将不会产生任何效果。

解决方法:在调用removeFromSuperview()之前,先检查SubView是否已经从父视图中移除,避免重复调用。

  1. SubView的层级关系:如果SubView被添加到了其他视图的子视图中,而不是直接添加到父视图中,那么调用父视图的removeFromSuperview()方法并不会删除SubView。

解决方法:确保调用removeFromSuperview()的是SubView所在的直接父视图,或者使用适当的方法来删除SubView。

总结起来,解决调用removeFromSuperview()后无法删除SubView(nib)的问题,可以通过正确处理引用计数、避免重复调用、确保正确的层级关系来解决。此外,还需要注意在使用nib文件创建SubView时,确保正确加载和初始化nib文件,并将其添加到父视图中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

App的生命周期

无法存在storyBoard或xib中,所以可以在awakeFromNib方法中被加载进来。...loadView 当执行到loadView方法时,如果视图控制器是通过nib创建,那么视图控制器已经从nib文件中被解档并创建好了,接下来任务就是对view进行初始化。...如果nibName为空或找不到对应的nib文件,则会创建一个空视图(这种情况一般是纯代码) 注意:在重写loadView方法的时候,不要调用父类的方法。...viewWillAppear 系统在载入所有的数据,将会在屏幕上显示视图,这时会先调用这个方法,通常我们会在这个方法对即将显示的视图做进一步的设置。...viewWillDisappear 在视图切换时,当前视图在即将被移除、或被覆盖是,会调用该方法,此时还没有调用removeFromSuperview

1.3K10

View编程指南(三)

因此,从层次结构的root view调用此方法会搜索层次结构中的所有view,但是从特定的subview调用它只会搜索view的子集。...使用这些方法比删除subview并重新插入它们要快。 要从其superview移除subview,请调用subviewremoveFromSuperview方法(而不是superview)。...请记住,如果您从其supview中删除subview并打算重用它,则必须再次保留该subviewremoveFromSuperview方法在移除之前autorelease一个subview。...此方法的实现可以执行以下任何操作: 调整任何直接subview的大小和位置。 添加或删除subview或核心动画layer。...与view关联的layer类型在创建view无法更改。 因此,每个view使用layerClass类方法来指定其layer对象的类。

1.7K30
  • iOS中纯代码创建的UI控件使用weak还是strong

    通过IB创建的控件,其实试图默认对其有着强引用-->比如IB创建一个UIButton -->形成了以下引用:UIViewController -->UIView-->subView --> UIButton...,而只要有subView,就会为其添加强引用,所以IB创建的控件,一般是使用weak。...当我们在 touchsBegan方法中再调用这个控件的地址时: ? 发现strong-->该控件存在; ? weak -->控件销毁了!...--->华丽分割线:调用removeFromSuperView方法,可以查看weak 和 strong的区别: ? 这里发现,removeFromSuperView之后,控件的地址还在,并未被消除!...-->使用strong:只有当前控制器被销毁的时候,指向faceBtn的强引用才会取消,faceBtn才会被销毁,所以这种情况下,即便是removeFromSuperView,还是无法释放该控件!

    1.5K40

    View官方文档

    实际view对象的drawing代码调用越少越好,并且当代码被调用,结果会被Core Animation缓存并且会被尽可能多的复用。复用尤其在animation的时候非常有用。...系统会等到当前runloop的结束在重新进行任何重绘之前,这个delay会给机会去删除view或者隐藏view,或者其他形式的对view的操作。所有操作都会在同一时间得到反应。...因为removeFromSuperview会autorelease一个subview,在真正移除之前。...在自定义view时需要注意: a) 决定好合适的初始化函数: 如果是手动编写,override initWithFrame:方法 如果是从nib文件读取,override initWithCoder...改变一个view的subview的animation方法:在iOS4,使用transitionWithView:duration:options:animations:completion:方法去初始化一个

    2.5K20

    提升UITableView性能-复杂页面的优化

    随着App的用户界面的内容越来越丰富,再强的手机可能都无法同时渲染复杂的UI界面和保证流畅的体验。所以,我们这些程序猿=。=在写代码的时候就要注意,如何尽可能提高用户的操作流畅性。...只定义一种Cell的好处 减少代码量,减少Nib文件的数量,统一一个Nib文件定义Cell,容易修改、维护。 基于Cell的重用,真正运行时铺满屏幕所需的Cell数量大致是固定的,设为N个。...如下图定义Cell: Cell示意图 图中的Subview1、Subview2、Subview3就是不同类型Cell的不同之处,所以我们在“cellForRowAtIndexPath”函数中,设置Cell...= 首先要确定的是,在iOS中,系统会先调用“tableView:heightForRowAtIndexPath:”获取每个Cell即将显示的高度,从而确定整个UITableView的布局。...然后才调用“tableView:cellForRowAtIndexPath”获取每个Cell,我们也是在这里填充、设置Cell的。 所以,既然高度总会被用到,那就早早的在获取数据时就计算好吧!

    1K50

    《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3

    第2章 使用 Interface Builder ---- 解决冲突 解决普通IB文件冲突 Open As -> Source Code <<<<<<< ======= >>>>>>> 编辑好,再删除这三行就可以了...+ subView.width + subView.trailing; scrollView.contentSize.height = subView.top + subView.height+ subView.bottom...} } } IB 文件的加载过程 Bundle 和 UINib 将 nib 加载到内存 解固化并实例化 nib 文件里对应的对象 建立 connections (outlet、action) 调用...prepareForInterfaceBuild() 只需要将实时渲染的代码放到 prepareForInterfaceBuild() 方法中就可以了,该方法并不会在程序运行时调用。...无法连线 IB 文件是否与源文件关联 @IBAction 红色提示 先在源文件中定义好方法,再从源文件 拖 到 IB 文件进行 连线

    2.5K80

    EasyGBS删除告警信息无法同步删除告警录像和快照的优化

    在TSINGSEE青犀视频平台中,EasyGBS和EasyCVR结构化智能分析平台都是支持告警上报功能的,当EasyGBS在底层数据收集上来,在对原始数据解析,增加了告警计算将告警信息持久化,当监测有异常情况时...EasyGBS在客户现场运行时,出现了一个关于告警的问题,即告警删除没有同步删除告警录像和快照,导致视频和图片文件依然占用磁盘空间。...image.png 我们对录像文件进行检查,能够查看到当数据库记录删除的时候,没有去删除对应的资源文件,导致硬盘空间占用。...再次查询记录成功删除。...image.png 当然了,EasyGBS并不是一个封闭的系统平台,假如用户有其他的平台,想要调取我们的设备报警信息,也可以通过接口来获取,EasyGBS视频平台提供了丰富的二次开发接口,用户可以自由选择不同的接口调用并集成到自己的平台上

    99010

    【iOS】UI基础Day1-笔记(拖线、UIView方法、属性等)

    UIButton *btn; IBOutlet:只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线 -(IBAction)delete1{//移除控件[self.myTitle removeFromSuperview...0x7fdf7048b200> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key 解决办法:删除多余的连线...NSInvalidArgumentException', reason: '-[ViewController delete2]: unrecognized selector sent to instance >解决办法:添加对应的方法或者删除多余的连线...位置、背景色等等 - 控件的共有属性封装在其父类——UIView中 UIView常见属性 superView:查看父控件 NSLog(@"%@",self.greenView.superview); subView...:移除控件 [self.myTitle removeFromSuperview]; viewWithTag:根据一个标识 注意:尽量少用Tag ---- UIViewc常见属性:尺寸和位置 frame

    54320

    一个iOS11上的列表必现crash

    经过排查发现是在引导关注弹幕出现的时候退出才会必现crash,之后进行了复现,拿到了完整的crash堆栈。...libdyld.dylib`start + 1如堆栈所示,crash发生在弹幕面板dealloc的时候,当UITableView进行dealloc时,会对所有的cell进行dealloc,cell的subview...subview的约束出现了问题,这两个item有一个commonAncestor导致了crash,虽然不太明确为什么iOS11上两个subview有commonAncestor时dealloc会crash...,但检查代码和当版本需求确认是DMKLocalFocusDanmuCell引入的。...首先描述下引导关注弹幕的特殊逻辑,需求要求首先在弹幕面板上方展示引导关注按钮,可以有正常关注逻辑,之后展示3秒,引导关注按钮转为一条特殊弹幕,同样有正常关注逻辑,并且即使此弹幕划走之后,关注状态依然会有通知进行相应

    1.2K50

    Django 解决新建表删除无法重新创建等问题

    起因 同步表的过程中,我手动将数据库中的一个表删除了,此时再去执行命令,发现不能再数据库中新建表了 修改了表结构以后执行python3 manage.py migrate 报错: No changes...detected 所以进数据库把对应的表删除了,想着重新生成这张表....删除表以后执行: python3 manage.py makemigrations python3 manage.py migrate 还是不能生成表,提示:No changes detected...处理过程 一、首先删除了app对应目录下的数据库对应的文件和缓存文件: $ rm -rf migrations/ __pycache__/ 一般可以从本地删除 重新执行: ··· $ python3...以上这篇Django 解决新建表删除无法重新创建等问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3.1K20

    IOS开发之视图和视图控制器

    往父视图中添加的SubView会被放在一个数组中。往我们SuperView中添加的SubView的坐标和index都是相对于我们的父视图来配置的。...frame初始化视图,参数为CGRectMake(x, y, width, height);             (2) insertSubView: atIndex: 往指定层上插入视图,哪个View调用该方法...sendSubViewToBack: 把子视图放到最后             (7) exchangeSubviewAtIndex: withSubviewAtIndex: 交换两个视图的前后顺序             (8) removeFromSuperview...视图层大致分为下面的几类         1.容器视图                 容器视图用于增强其他视图的功能,或者为视图内容提供额外的视觉分隔,比如UIScorllView类用于显示因内容太大而无法显示在一个屏幕上的视图...;   @end //-------实现部分----------- @implementation MainViewController //主视图加载要做的事情 -(void)viewDidLoad

    1.8K70
    领券