gpt4 book ai didi

objective-c - NSControl 子类无法读取目标?

转载 作者:太空狗 更新时间:2023-10-30 03:48:11 25 4
gpt4 key购买 nike

以下代码:

- (void) setTarget:(id)anObject {   
NSLog(@"anObject: %@",anObject);
[super setTarget:anObject];
NSLog(@"Target: %@",[self target]);
}

有这样的输出:

anObject: <DropZoneViewController: 0x15dd5770>
Target: (null)

这是 NSControl 的子类。那我做错了什么?

我想要实现的目标:我有一个接受拖动对象的 NScontrol。当拖动结束时,我想将控件的 Action 发送到它的目标。但是,如果上述方法不起作用,我如何获得控件的 Action 和目标?

最佳答案

NSControl 不存储它自己的目标,这是它的单元格应该做的。

所以这可能会失败的原因有两个:

  1. 您的控件没有单元格
    在这种情况下,您确实应该创建一个 NSActionCell 的子类来实现您的控件。 NSControl 的子类除了设置单元格外不应该做太多事情。
    如果您不想通过使用 NSCell 以正确的方式执行此操作,则必须将实例变量添加到您的 NSControl 子类中以存储目标和操作并覆盖getter 和 setter 以使用它们。

  2. 您的单元格不是 NSActionCell 的子类。常规 NSCell 也不存储目标。
    如果您使用的自定义单元格不是 NSActionCell 的子类,只需更改它,使其继承自 NSActionCell 而不是 NSCell。如果你不能这样做(例如因为你正在继承一个你不能改变的 NSCell 子类)你必须将目标和选择器的实例变量添加到你的单元类并覆盖它的 setter 和 getter .

关于objective-c - NSControl 子类无法读取目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com