如何设置表视图单元格附件视图以保留先前初始化的 UIImageView?

2023-11-25

假设我的视图控制器中有一个属性,定义如下:

@property (nonatomic, retain) UIImageView *checkmarkOffAccessoryView;

I @synthesize这在实施中,release it in -dealloc并初始化它-viewDidLoad如下:

self.checkmarkOffAccessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmarkOff.png"]] autorelease];

到目前为止,一切都很好。

当我在表视图委托中使用它作为多个单元格的附件视图时,会发生两件事:

  1. 仅一个单元格的附件视图显示图像
  2. 应用程序 UI 冻结。

据我所知,应用程序并没有崩溃,用户界面只是变得没有响应。这既在模拟器中又在设备上。

以下是我如何在单元格中使用初始化属性:

- (UITableViewCell *) tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    // initialize or dequeue cell...

    if (condition)
        cell.accessoryView = self.checkmarkOffAccessoryView;
    else
        cell.accessoryView = nil;
}

使用上述代码,只有一个单元格显示附件视图,并且 UI 冻结。

如果我初始化UIImageView直接在委托方法中实例化,我得到了显示附件视图的所有满足条件的单元格,并且我没有遇到 UI 冻结:

- (UITableViewCell *) tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    // initialize or dequeue cell...

    if (condition)
        cell.accessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmarkOff.png"]] autorelease];
    else
        cell.accessoryView = nil;
}

我的目标是初始化尽可能少的对象并重用一个UIImageView。我很好奇为什么第一块代码有问题以及我可以采取什么措施来解决这个问题。

好像是细胞的accessoryView属性应该只增加retain计数self.checkmarkOffAccessoryView但看来我遗漏了一些细节。

我忽略了什么?谢谢你的建议。

EDIT

我觉得:

self.checkmarkOffAccessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmarkOff.png"]] autorelease];

是相同的:

UIImageView *uncheckedView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmarkOff.png"]];
self.checkmarkOffAccessoryView = uncheckedView;
[uncheckedView release];

不管怎样,我都会经历同样的冻结症状。


您不能多次添加相同的视图。 UI 处理程序将会变得疯狂。为了确保这一点,我尝试按照您上面所说的操作,但遇到了同样的问题。 UI 冻结,图像仅出现在其中一个单元格中。

你能做的最好的事情是将你的图像存储为分配的 UIImage,并有一个帮助函数为每个单元格返回一个新的 UIImageView。

使用您当前的方法(没有存储的 UIImage)您可能会这样做:

-(UIImageView *) makeCheckmarkOffAccessoryView
{
    return [[[UIImageView alloc] initWithImage:
        [UIImage imageNamed:@"checkmarkOff.png"]] autorelease];
}

然后做

cell.accessoryView = [self makeCheckmarkOffAccessoryView];

您可能知道,另一方面,UIImage 可以使用任意多次。 UIImageView 不会占用太多空间,因此您可以轻松拥有一堆,而不必担心。

为了扩展仅一处的交易,想象一下您同时将 UIView 添加到两个地方。

[ob removeFromSuperview] 会对该对象执行什么操作?它会消除两个地方的视图吗?仅来自其中之一?请求[ob superview]时会返回哪个值?显然,用户界面并不是为了处理您所要求的内容而设计的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置表视图单元格附件视图以保留先前初始化的 UIImageView? 的相关文章

  • 以编程方式单击 tabbarController 的选项卡

    我有 2 个带有 Nib 文件的选项卡按钮 在按下选项卡 1 上的按钮时 我希望它显示选项卡 2 的视图 而不是单击选项卡栏按钮 2 我的意思是 我想以编程方式单击第二个选项卡栏按钮 我怎样才能做到这一点 可能吗 您必须创建一个包含以下内容
  • 如何获取原始触摸屏数据?

    我知道我可以在 iPhone 应用程序中获取触摸事件 但这些触摸事件都被我过滤掉了 如果我将设备按在脸上 它会过滤掉这些触摸事件 因为它可以检测到它不是手指 我如何获得原始触摸事件 而不以任何方式过滤 没有用于此目的的公共 API 您可以获
  • 更改iOS11中的UISearchBar背景图片

    我想更改我的 UISearchBar 背景图像 当将它添加为我的 UITableView 中的标题视图时 它工作得很好 但是 当我想更改它以将 SearchBar 设置为 navigationItem 的 searchController
  • 按钮操作在 iPhone 中不起作用?

    我有一个 iPhone 应用程序 我在其中添加一个自定义视图 尽管有一个导航栏视图 在正常情况下 我隐藏该自定义视图 并在需要时取消隐藏它 现在 我正在向该自定义视图添加一个具有操作的按钮 但是当我点击它时 没有任何操作起作用 任何人都可以
  • 显示仅允许数字和小数点的输入?

    有什么方法可以定义一个
  • iphone sdk - 调用视图的超级视图的视图控制器的方法

    你好 我如何在当前视图中调用当前视图的超级视图的视图控制器中实现的方法 你能帮我吗 谢谢 通常这是通过代表完成的 让您的视图接口定义一个协议和对某个委托的引用 然后让你的父视图控制器实现这个协议 然后父母会这样做 someView fooD
  • UILocalNotification 播放自定义声音

    我在我的应用程序中实现了本地通知 但我只是想知道是否有一种方法可以播放不属于 iPhone 应用程序主包的一部分的声音 基本上在我的应用程序中 我希望用户录制生成本地通知时播放的声音 而不是播放预先录制的或默认的声音 据我所知 这是可以实现
  • iPhone OS:从匿名对象获取方法和变量列表

    我正在构建我的第一个 iPhone Obj c 应用程序 并且我有大量的数据保存子类 我将它们传递给引用函数 对于 cite 函数 这些对象是匿名的 我需要找到一种方法来访问每个传递对象的所有变量 我一直在使用预构建的 NSArray 和选
  • 特定时间的 iPhone 本地通知

    我想每周晚上 10 点 无论哪个国家 地区 发出通知 我需要使用时区吗 目前 我使用下面的代码每周触发通知 但如何在晚上 10 点准确触发通知 NSDate date NSDate date NSDate myNewDate date da
  • iOS 4.0 contentScaleFactor 和比例 - 在 3.1.3 中如何处理?

    我的任务是制作一个在 iOS 4 0 中运行的应用程序再次在 3 1 3 和 3 2 中运行 大多数情况下 它很简单 但处理新 API 的扩展和其他必须传递 返回值的情况很困难 respondsToSelector performSelec
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • 如何在我的应用程序中添加应用内购买

    我想在我的应用程序中使用应用程序购买应用程序 但我不知道如何执行此操作 任何人都可以帮助我如何做以及源代码在哪里 给我链接或代码 这里有一堆链接 应用内购买编程指南 http developer apple com iphone libra
  • 如何使用 iOS 可达性

    我正在开发一个使用网络的 iPhone 应用程序 iPhone 通过 HTTP 请求与我的服务器通信 并且应该可以在 WiFi 和 3G 上运行 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请
  • 使用 UItableviewCell 实现 Google 地图

    我正在尝试在 UItableviewCell 组件内实现谷歌地图 我这样做的方法是在原型单元中定义 GMSMapView 然后使用 dequeueReusableCell 方法配置地图单元 但是 我尝试应用的任何更改都会失败 例如添加标记
  • 将静态库合并为单个

    如何将静态库合并为一个 我确实有三个静态库 libSignatureLibary armv6 a libSignatureLibary armv7 a 和 libSignatureLibary i368 a 现在我想将这三个文件合并到一个库
  • 检测 iPhone 是否在运行时运行调试/分发构建

    是否可以在运行时检测正在运行的应用程序是否是通过调试或分发进行编译的 在项目信息中 对于调试配置 添加 DEBUG 预处理器宏 在 GCC 4 2 预处理部分 在代码中 如果您想要包含或不包含某些代码用于调试版本 则可以使用 ifdef 来
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • iPhone - UIImage imageWithData 返回 nil

    我需要从字节数组创建 UIImage 现在我创建了字节数组 image CGImageCreateWithImageInRect aux CGImage imageRect context CGBitmapContextCreate dat
  • 编码时捕获 NS_AVAILABLE_IOS

    我知道如何更改支持的最低操作系统IPHONEOS DEPLOYMENT TARGET 我目前正在 Xcode 4 5 下进行开发并使用 iOS 6 0 SDK 我想做的是找到一种方法 每当我使用标记的代码时在编译中抛出警告 NS AVAIL
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent

随机推荐

  • 两个具有相同函数名的jquery插件之间的冲突

    我正在一个大型网站工作 该网站有两个相互冲突的 jquery 插件用于执行自动完成 1 jquery autocomplete js 不是jquery ui的一部分 它的作用是 fn extend autocomplete function
  • 从特定父级获取 WordPress 子类别

    我正在构建一个小型缩略图库 其中包含 ID 为 406 的类别中的帖子 有些帖子属于多个类别 我不确定如何获取 406 的子类别名称 post cat 0 gt name 返回一个类别 但我只需要它来返回 406 的子级 thumbnail
  • 捕获 Ruby 方法中的变量

    在咖啡脚本中 f gt v 5 g gt v g f returns 5 as expected In Ruby def f v 5 def g v undefined local variable or method v for main
  • MySQL 基准测试

    我正在尝试使用 MySQL 基准测试来测试一些查询 但是 我遇到了错误 SELECT benchmark 10000 select title from user 作为回报我得到这个错误 ERROR 1242 21000 Subquery
  • 析构函数中是否需要删除?

    我有以下代码 我想知道是否如此delete b这里有必要吗 我的操作系统会自动清除分配的内存区域吗 class A B b A b new B A delete b 非常感谢 是的 你必须delete使用创建的每个对象new 你拥有的 在这
  • 如何使用 Spring Boot 通过 Outlook 发送邮件?

    我的 application properties 文件包含以下配置 spring mail properties mail smtp connecttimeout 5000 spring mail properties mail smtp
  • 为对话框创建阴影

    我想为我的自定义对话框创建阴影 这可能吗 GhazalActivity public void viewShareMenu Dialog share new Dialog this R style shareDialogStyle shar
  • 实体框架代码优先 IQueryable

    我正在使用实体框架代码优先 但遇到了一个小障碍 我有一个类 Person 定义如下 public class Person public Guid Id get set public virtual ICollection
  • Android Facebook Api 异常 - Remote_app_id 与存储的 id 不匹配

    我有一个问题 如本文标题所示 我无法登录 SessionState currentstate session getState 给我一个状态CLOSED LOGIN FAILED 我看了这个帖子 Android Facebook SDK 3
  • Windows 批量检查变量是否以特定字符串开头、结尾并包含特定字符串

    我正在尝试检查批处理文件中的变量是否以 包含BETA某处并结束于 是否可以 如果是的话 有人可以帮我吗 假设您的变量不包含任何换行符或回车符 那么所需要的只是一个 FINDSTR 命令 它具有有限的正则表达式支持 足以解决这个问题 echo
  • data.table 设置 key 时如何对字符串进行排序

    昨天我不得不花一些时间试图找到我的代码中的错误 我发现data tablepackage 对字符串的排序方式与 base 略有不同 这是正常行为吗 最有效的方法是什么 其优点是data table 重现使用碱基获得的结果order功能 这是
  • 如何将 SQLite SQL 转储文件转换为 PostgreSQL?

    对于开发 我使用 SQLite 数据库并在 PostgreSQL 中进行生产 我用数据更新了本地数据库 并且需要将特定表传输到生产数据库 Running sqlite database dump gt the path to sqlite
  • 是否可以将 Windows CRITICAL_SECTION 对象配置为拒绝递归访问?

    默认情况下 CRITICAL SECTION 对象是递归的 是否可以像 pthread 互斥体一样配置此行为以启用或禁用递归线程访问 针对评论进行澄清 我特指 Windows CRITICAL SECTION 对象 而不是 Windows
  • AngularJS 页面内多个 ng-app

    我刚刚开始学习 Angular JS 并创建了一些基本示例 但是我遇到了以下问题 我创建了 2 个模块和 2 个控制器 shoppingCart gt ShoppingCartController namesList gt NamesCon
  • Haskell 中的运算符优先级

    我对 Haskell 中运算符优先级的规则感到困惑 更具体地说 这是为什么 Main gt 2 3 mod 2 0 与此不同 Main gt 2 mod 3 2 2 函数调用绑定最紧密 所以 2 mod 3 2 是相同的 2 mod 3 2
  • 连接两个独立数据库的结果

    是否有可能JOIN来自两个独立的 postgres 数据库的行 我正在使用一台服务器上有几个数据库的系统 有时我真的需要这样的功能 根据http wiki postgresql org wiki FAQ 除了当前数据库之外 无法查询其他数据
  • 在确定菜单项的放置位置时是否有任何标准可遵循?

    在开发基于Windows窗体的应用程序时 设计窗体的主菜单系统时是否应该遵循一些标准 大多数带有菜单系统的 Windows 应用程序都会有标准的文件 编辑 查看 工具 帮助菜单 您如何确定任何其他顶级菜单项的位置 另外 如何确定子菜单项的放
  • 纯CSS折叠/展开div

    我有一个纯CSS可折叠div 它基于其他人使用的代码 target伪类 我想要设置的是一个包含 12 个以上问题的页面 当您单击 按钮时 答案 div 会在下面展开 如果不编写大量额外的 CSS 我无法弄清楚如何在此页面上制作多个折叠 di
  • 需要一个解释如何使用 PHPUnit 的网站 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找教程 optimally with Zend Framework 关于如何使用PHPUnit 我在上面找到了一对google但还没有安静地理解它 您正在寻找的是袖珍指南 它
  • 如何设置表视图单元格附件视图以保留先前初始化的 UIImageView?

    假设我的视图控制器中有一个属性 定义如下 property nonatomic retain UIImageView checkmarkOffAccessoryView I synthesize这在实施中 release it in dea