iOS:如何将内容从滚动视图复制到另一个滚动视图

Posted

技术标签:

【中文标题】iOS:如何将内容从滚动视图复制到另一个滚动视图【英文标题】:iOS: How to copy contents from a scrollview into another scrollview 【发布时间】:2014-05-20 06:05:27 【问题描述】: 我以编程方式创建了 UIScrollView,并在其中添加了多个 buttons。 它运行良好,没有任何问题。 但我需要通过从以前的滚动视图中复制内容来创建另一个 scrollview

查询: 如何将First_Scrollview内容复制到Second_Scrollview

代码:

- (void)ScrollviewItems

    int x = 5;
    int y = 5;
    for(int i=0; i<totalButtonsCount; i++)
    
        CategoryItem = [[UIButton alloc]initWithFrame:CGRectMake(x, y, buttonWidth, 50)];
        CategoryItem.titleLabel.backgroundColor = [UIColor clearColor];
        CategoryItem.backgroundColor = [UIColor redColor];
        [CategoryItem setTitle:[NSString stringWithFormat:@"%d",i]
                      forState:UIControlStateNormal];
        CategoryItem.tag = i;
        [CategoryItem addTarget:self
                         action:@selector(CategoryItemAction:)
         forControlEvents:UIControlEventTouchUpInside];
        [First_Scrollview addSubview:CategoryItem];
        x = x + (buttonWidth + 5);
    
    First_Scrollview.contentSize = CGSizeMake(x,50);

    Second_Scrollview = [self.Category_Scrollview copy]; // Error

错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIScrollView copyWithZone:]: unrecognized selector sent to instance 

【问题讨论】:

[UIScrollView copy] 不能这样工作。实现目标的最简单方法是循环滚动视图的子视图并将这些子视图添加到目标滚动视图。 UIView 可以在一个超级视图/父视图中。要复制它,您需要重新创建它并将其作为子视图添加到第二个父视图中,迭代就像 Raptor 建议的那样是您的朋友。 【参考方案1】:

你也可以通过这个for循环来做到这一点

for(UIView *v in self.scrollview1.subviews)
        [self.scrollview2 addSubview:v];

【讨论】:

【参考方案2】:

您不能以您尝试的方式复制视图。

你需要这样做:

NSData * viewData = [NSKeyedArchiver archivedDataWithRootObject:myView];
NSView * viewCopy = [NSKeyedUnarchiver unarchiveObjectWithData:viewData];

【讨论】:

以上是关于iOS:如何将内容从滚动视图复制到另一个滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将触摸事件从一个视图传递到另一个视图

如何将滚动动画从一个uiscrollview“传输”到另一个

如何将一个滚动视图图像选择到另一个滚动视图中?

如何调整滚动视图内容的大小并根据其文本大小将文本视图放入其中? [复制]

切换2个UIWebViews的内容

将图像从滚动视图拖动到视图而不会影响其位置