我基本上是在尝试执行this question中涵盖的内容,但是请复制而不是移动。
以下是视图层次结构的外观(从现有问题复制)。 A 和 B 都在常见的超级视图中。 X 是 A 内的视图。
A B
_____ _____
| | | |
| X | -> | |
|___| |___|
我想将 X 复制到 B 。 A 是可用商品的列表。我想从 A 中选择一项,并将其副本添加到 B 。
这是我到目前为止所提出的。在 X 中检测到触摸后,我制作了一个视图副本(viewCopy)。然后我将viewCopy添加到A并将原始视图添加到 A 和 B 的超级视图中。这是因为触摸可能在原始视图上处于活动状态,而不在复制的视图上。我希望新的(复制的)视图响应拖动,以便从 A 平滑过渡到 B 。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
id viewCopy = [self mutableCopy];
[self.superview.superview addSubview:self];
[self.superview addSubview:viewCopy];
[viewCopy release];
}
这显然不起作用。这是一个非常粗略的尝试,但我不知道如何去做这件事。任何帮助都会很棒。感谢。
答案 0 :(得分:0)
UIView不遵守NSCopying协议,因此尝试复制它可能会失败 - 它会击中基础NSObject -mutableCopy
,它不能满足您的需求。要获取克隆视图,您必须重新创建它。最简单的方法是设置X视图,以便从XIB加载或将其实现为可以设置自己内容的自定义UIView子类。
有关前者的示例,请查看the docs;该示例用于加载自定义表格视图单元格,但该技术可轻松应用于通用自定义视图。