NSCollectionViewItem 子类中的自定义插座

2023-12-02

我觉得这是一个简单的任务,但我似乎无法使其发挥作用。 我正在尝试使用带有自定义项目的 NSCollectionView 。我向该项目的自定义视图添加了另一个 NSImageView,并对该视图进行了子类化,以便添加连接到该附加 NSImageView 的自定义插座。

现在我压倒一切- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object因为有时我需要删除这个 NSImageView。

- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object {

    CustomItem *theItem = (CustomItem *)[super newItemForRepresentedObject: object];

    ...

    if (I need to remove that NSImageView) {

        [[theItem additionalImageView] removeFromSuperview];

    }

    return theItem;

}

无论如何,additionalImageView 似乎是(nil)。这在某种程度上是显而易见的,因为 super 方法将返回默认的 NSCollectionViewItem,它没有自定义插座。

在这里最好做什么?我读过一些关于copy方法,我尝试过:

- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object {

    CustomItem *theItem = [(CustomItem *)[super itemPrototype] copy]; // Here is the change

    ...

    if (I need to remove that NSImageView) {

        [[theItem additionalImageView] removeFromSuperview];

    }

    return theItem;

}

但这是行不通的。所以,使用自定义 NSCollectionViewItem 时有没有办法保留自定义插座?

任何帮助将不胜感激。谢谢你!


问题是没有人会实例化新项目的图像视图。复制不起作用,因为您需要两个图像视图,而不是一个。

有两种方法可以处理这个问题:

  1. 而不是调用超类的实现newItemForRepresentedObject, use NSNib自己实例化该项目(下面的工厂方法)。在方法调用中,您可以指定self作为所有者,它会为您连接插座。然后设置representedObject并摆弄图像视图。这是工厂方法的代码:

    // Load item view from CustomItem.nib
    // For consistent results, nib should contain exactly one NSCollectionViewItem.
    - (NSCollectionViewItem *)newCollectionViewItem {
        static NSNib *nib;
        if (!nib) nib = [[NSNib alloc] initWithNibNamed:@"CustomItem" bundle:nil];
    
        NSArray *nibObjects;
        if (![nib instantiateNibWithOwner:self topLevelObjects:&nibObjects]) return nil;
    
        for (id obj in nibObjects)
            if ([obj isKindOfClass:[NSCollectionViewItem class]])
                return (NSCollectionViewItem *)obj;
    
        return nil;
    }
    
  2. 打电话后[super newItemForRepresentedObject:],检查是否需要keep图像视图。如果这样做,请实例化一个新的NSImageView,设置其属性,并将其添加到超级视图中。最后一部分听起来很棘手。也许采用这种方法的人会提供一些代码。

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

NSCollectionViewItem 子类中的自定义插座 的相关文章

  • 在 Cocoa/Carbon 下调试 NULL CGContext

    在执行程序期间 我在 XCode 调试控制台中得到以下输出
  • 如何将 JPG 文件加载到 NSBitmapImageRep 中?

    Objective C 可可 我需要将 JPG 文件中的图像加载到二维数组中 以便可以访问每个像素 我正在尝试 未成功 将图像加载到 NSBitmapImageRep 中 我尝试了以下两行代码的几种变体 NSString filePath
  • 为什么在 10.5 上我必须在 NSWindowController 上调用 showWindow 两次?

    我有一个 NSWindowController 的子类 我用它从笔尖加载窗口并将其显示在屏幕上 下面是当我想显示窗口时调用的代码 在 10 6 上 当调用 showCustomWindow 时 会显示窗口 但在 10 5 上 必须调用此方法
  • 如何用Block简化回调逻辑?

    假设我需要与一个提供协议的类进行通信 并在操作完成时调用委托方法 如下所示 protocol SomeObjectDelegate required void stuffDone id anObject void stuffFailed e
  • iOS 使用 NSColor 与 UIColor?

    有什么区别UIColor and NSColor 什么时候会使用每一种 我碰到NSColor在试图弄清楚的同时UIColor用于 iOS 中的属性字符串 我理解使用UIColor对于 UIKit 等 但我不认为NSColor对于这种事情确实
  • 如何在应用程序项目中使用 Cocoa Touch 框架

    我熟悉构建单个 iOS 应用程序 但我坚持使用 Cocoa Touch 框架向多个应用程序共享通用代码 问题 框架的头文件不可见 无法链接到消费应用程序项目 我做了什么 1 我创建了一个名为 libTestFramework 的项目 Coc
  • 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • 从 cocoa 编辑系统偏好设置

    有没有办法使用可可以编程方式编辑系统首选项 是否需要一些框架 我需要这样做来更改全局代理设置 另外 我的应用程序是沙盒的 有关于如何执行此操作的示例代码吗 感谢您的帮助 您正在寻找系统配置框架 但这并不容易 我认为沙盒应用程序不可能这样做
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 适用于 Objective-C / iPhone 的良好 HTTP 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPDATE 这个问题显然已经过时了 参见日期 我建议只使用现代 iOS7 功能 例如 NSURLSession 我想 这个问题是为了历史
  • gdb 声称它不知道如何运行

    我在 Mac Pro 上的 Mac OS X 10 6 6 上使用 Xcode 3 2 3 来构建 GrowlTunes 的修订版 5fd480ef577f咆哮开发存储库 http growl info hg growl developme
  • 如何使用 iconutil 手动创建 icns 文件?

    当我验证我的应用程序时 出现此错误 应用程序包不包含 ICNS 格式的图标 同时包含512x512 and a 512x512 2x image 我用来制作 icns 图标Img2icns http www img2icnsapp com
  • Objective-C 中的属性和实例变量

    我对 Objective C 中的属性和实例变量感到相当困惑 我正在阅读 Aaron Hillegass 的 Mac OS X 的 Cocoa 编程 一切都很合乎逻辑 你可以像这样声明一个类 class Something interfac
  • 为什么这段代码不能产生正确的输出? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 给定一个字符串和一个数字 该函数将从
  • 以编程方式检索 OSX 网络/代理配置值

    考虑到我的应用程序具有当前登录的管理员用户的用户 ID 和密码 是否可以从 OSX 网络设置中检索配置值 对 高级 代理 选项卡内容特别感兴趣 通过设置 API 完成 以下是从 OSX 网络设置中获取 PAC URL 字符串的示例 stat
  • 如何使用 NSWorkspace launchApplicationAtURL?

    我尝试使用以下命令运行 TextMate foo txt 的等效项在 URL 处启动应用程序 二进制文件的名称是 TextMate 我有一个参数 我尝试了以下代码 但它似乎不起作用 find the textmate NSURL bURL
  • 将 NSAttributedString 的子字符串替换为另一个 NSAttributedString

    我想替换一个子字符串 例如 replace of an NSAttributedString和另外一个NSAttributedString 我正在寻找一种等效的方法NSString s stringByReplacingOccurrence
  • 为什么我的 NSTableView 中的图像淡出?

    首先 有一个NSArrayController 服务器 其内容是 服务器 对象的数组 我也有一个NSTableView与一列 该列绑定到服务器的 arrangedObjects status 属性 我用的是自定义的NSValueConver
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • 如何使用NSDecimalNumber?

    我正在构建一个需要对金钱进行计算的应用程序 我想知道如何正确使用 NSDecimalNumber 特别是如何从整数 浮点数和双精度数初始化它 我只发现它很容易使用 decimalNumberWithString 方法 这 initWith

随机推荐

  • 以编程方式设置 XtraReport 中查看器表单的标题

    有谁知道如何在显示 XtraReport 文档时设置表单查看器的标题 场景如下 我配置了 XtraReport 报告 调用 ShowPreviewDialog 方法显示它 查看器表单打开并显示文档 我需要为此查看器表单设置标题 但找不到完成
  • Converse.js 渲染到容器中

    是否可以配置 Converse js 将其框呈现为自定义div容器而不是将它们添加到页面正文中 是的 你可以通过写一个来做到这一点converse js 插件在其中你覆盖插入页面的方法ChatBoxView 请参阅我上面链接的插件文档 简而
  • 根据最新的 KeyStroke 填充 JTextField

    我的 UI 中的用例是填充两个JTextField基于双击项目的组件JList 最简单的是使用JCheckBox填充jTextField1如果选中该复选框 如果未选中则填充另一个复选框 反之亦然 这是完美的 但我想探讨是否可以在没有复选框的
  • WebDriver:executeScript() 导致 BindException

    javascripthere脚本位于Javascript 如何获取中断标签后面 前面的文本节点并用 ddb 标签包装它们 在跑步的时候 JavascriptExecutor driver executeScript javascripthe
  • MongoDB,正则表达式对索引字段的查询性能

    我想按名称查找帐户 在 50K 帐户的 MongoDB 集合中 按照通常的方式 我们用字符串找到 db accounts find name Jon Skeet indexes help improve performance 用正则表达式
  • Xcode 无法在 SVN 中获取新的类文件

    我有一个 SVN 存储库 我已从中更新了本地代码 并且此更新包含新的类文件 当我去构建时 由于 Xcode 中的文件中的代码已更新并引用了新文件 因此出现了链接器错误 该文件已添加到我在 Finder 中的目录 即我的本地文件系统是最新的
  • std::enable_if 选择类别专业化

    我试图理解std enable if以及使用它的好处static assert regular template specialitzation 阅读周围后我发现 当不满足特定条件时 这对于在编译时隐藏签名很有用 因为在这种情况下 将不会定
  • 从组件检查 Service Worker 安装进度(角度)

    我已将我的 Angular 应用程序更新为 PWA 因为我需要在第一次启动时预加载所有资源 应用程序有很多图像 用于 UI 这就是为什么我想在服务工作人员安装事件期间显示某种旋转器 加载栏并在完成后隐藏它 所以第一个问题 是否可以从组件处理
  • ImportError:无法从部分初始化的模块“...”导入名称“...”(很可能是由于循环导入)

    我正在将应用程序从 Django 1 11 25 Python 2 6 升级到 Django 3 1 3 Python 3 8 5 当我运行时manage py makemigrations 我收到这条消息 File home eduard
  • Transform scale() 用于带边框的元素时的 Safari 错误

    当 CSS 变换scale 函数用于带有边框的元素时 它在 Safari 上似乎存在错误 I m trying to zoom an image on mouse over using transform scale function bu
  • 如何在 Symfony 表单中指定默认值

    我试图在表单中指定默认值 以便在创建实体时表单字段具有值 不为空或空 但是 当编辑实体时 它显然应该显示存储的值而不是默认值 我的实体将自身初始化为构造的一部分 因此当实体是新的且尚未持久化时 应该设置这些值 如何通知 FormType 使
  • 静态方法和非静态方法有什么区别?

    请参阅下面的代码片段 Code 1 public class A static int add int i int j return i j public class B extends A public static void main
  • 如何将 Dropbox 共享链接(针对 zip 文件)下载到本地

    我有以下问题并需要相关帮助 我正在使用 Dropbox iOS SDK 是否可以下载 Dropbox 共享链接 针对 zip 文件 例如https www dropbox com s m2o28nls8m8uyx9 FacebookAPI
  • 无法读取 Google 地理图表中未定义的属性“arrayToDataTable”

    这是我在index html 上的设置 api 密钥已生成于console developers google com我不认为它导致了错误 问题是arrayToDataTable未定义 我将它放在我的 index html 上只是为了测试这
  • Woocommerce 新订单电子邮件通知中的自定义“回复”电子邮件标题

    我正在寻找在 woocommerce 中过滤新订单表单的电子邮件标题 我正在尝试将客户电子邮件地址替换为主站点管理员电子邮件地址 我们需要这样做 因为 Gmail 会将新订单标记为垃圾邮件 因为发件人地址与回复地址不同 下面的函数部分起作用
  • 使 ASP.NET Identity 2.0 电子邮件确认令牌适用于 WCF 和 MVC

    我有一个服务项目 WCF 和 MVC 项目 它们使用相同的数据库来处理移动和界面部分的服务部分 我必须在两者上设置电子邮件确认 我使用 OWIN ASP NET 2 0 库进行身份验证 并且两个项目都有单独的 UserManager For
  • 如何使用 servlet 从请求中获取上一页 URL

    如何使用 servlet 从请求中获取上一页 URL 例如 我来自index html 并从index提交了一个表单 如何获取index html URL并在servlet中使用它 request getRequestURL getRequ
  • 突出显示时,不会为自定义 UIButton 子类调用 drawRect

    当对自定义 UIButton 子类使用 drawRect 时 在突出显示时似乎永远不会调用它来绘制按钮 我需要在触摸事件中为按钮调用 setNeedsDisplay 吗 我找到了一个简单的解决方案 只需将以下方法添加到您的 UIButton
  • 更改group by结果的颜色

    数据 火车 取自卡格尔泰坦尼克号 我有以下情节 train groupby Survived Sex Age plot kind hist legend True histtype step bins 15 I want to change
  • NSCollectionViewItem 子类中的自定义插座

    我觉得这是一个简单的任务 但我似乎无法使其发挥作用 我正在尝试使用带有自定义项目的 NSCollectionView 我向该项目的自定义视图添加了另一个 NSImageView 并对该视图进行了子类化 以便添加连接到该附加 NSImageV