如何以编程方式复制界面构建器中内置的UIView?

时间:2010-06-10 23:26:41

标签: iphone objective-c uiview interface-builder uiscrollview

我想在Interface Builder中构建一个子UIView(包含在UIScrollView中),其中包含一些UILabel,然后我想以编程方式“复制”此视图调整其左侧位置(通过其宽度的倍数)来实现在UIScrollView中“浮动”左侧效果。然后我想将这个复制的UIView添加回UIScrollView,并为UILabels提供不同的文本。

问题是我不知道如何以及如何“复制”UIViews。

2 个答案:

答案 0 :(得分:3)

您可以尝试调用[查看副本],但如果不起作用我也不会感到惊讶。您可以使用NSKeyedArchiver / NSKeyedUnarchiver来序列化/反序列化视图,但这也非常糟糕。

相反,您可能希望加载视图的多个副本:

  1. 将您想要多个副本的视图移动到自己的笔尖中。
  2. 让你的对象“拥有”笔尖(无论你想要负责加载它的类)。
  3. 添加名为“myView”的IBOutlet或其他任何内容,并将其分配给您的视图。
  4. 在课堂上,请拨打以下内容:
  5. -(UIView)makeMeANewMyView {
      // Load MyView.nib into the myView outlet.
      [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self];
      // Take ownership.
      UIView * view = [[self.myView retain] autorelease];
      self.myView = nil;
      return view;
    }
    

答案 1 :(得分:2)

我对Objective-c编程(以及一般的oo编程)非常陌生。我难以记住的一件事是,每当你发现自己想要将某些东西“复制”到多个地方时,它可能意味着你需要继承某些东西,然后添加自定义子类的新实例。在这种情况下,我认为您想要创建UIView的子类,然后根据需要使用该自定义视图?

请注意,我发布这个建议是为了它的价值......我是一个完全没有目标的人 - 只是等待我自己的一个问题等待帮助!