2010-05-18 53 views
3

如果我通过Interface Builder在视图中设置了UIScrollView,如何在ViewController实现中获取对它的引用?我想以编程方式向滚动视图添加标签。如何在视图中获取对控件的引用?

例如,在C#中,如果您在UI /窗体中声明了文本框,则可以通过简单地使用为该文本框声明的ID来访问它。这在目标c中似乎并不简单。

感谢 凯文

回答

1

假设我理解你正确,你是从实例包含子视图,包括你想要的UIScrollView的一个的.xib视图控制器,有两种方式 - 首先,你可以将子视图数组中找到它由视图控制器拥有。其次,您可以在头文件中添加一个IBOutlet引用,然后在界面构建器中使用连接检查器进行连接。然后你可以参考代码中的对象,更改框架,添加标签等。

+0

是的,这听起来像你理解正确。 所以有一种ViewController方法返回视图中所有控件的数组? – Kevin 2010-05-18 00:49:38

+0

每个UIViewController都有一个视图属性,它是一个UIView。每个UIView都有一个属性子视图,它是UIViews的一个数组。然而,使Interface Builder中的链接比通过数组更容易,并且随着视图数量和子视图数量的增加,特别需要标识所需的对象。持续引用您想访问的内容会更方便。 – 2010-05-18 00:57:18

+0

查看http://itunes.stanford.edu/ - 点击链接到斯坦福iTunes U部分,然后找到iPhone课程 - 或者在iTunes商店搜索栏中搜索“CS193P”。看看讲座1和讲座2,当看到别人这样做时,如何让界面生成器改变更容易。 – 2010-05-18 01:11:16

1

您需要将您的ViewController连接到您的Nib文件。这非常简单。这是在iPhone/iPad上使用Interface Builder的基本工作流程:

  • 将'File's Owner'的类设置为视图控制器的类。你可以通过在你的nib窗口中选择'File's Owner'对象,按下Command-4,然后通过下拉菜单设置类来完成。
  • 创建具有以下格式的视图控制器属性:

    @属性(非原子,保留)IBOutlet中的UIScrollView滚动视图*;

IBOutlet关键字是一个评估为无效的宏。所以它实际上并没有对你的代码做任何事情,只是让Interface Builder知道'scrollView'属性可以被绑定。

  • 从您想要绑定到您的ViewController的对象进行控制拖动。在弹出窗口中,您可以选择您想要绑定到滚动视图对象的属性。

这种东西是非常基本的Xcode的东西。如果你阅读任何教程,它会涵盖这一点。祝你好运,并享受!

编辑: 我应该补充说,如果您使用New File对话框中的默认“New UIViewController Subclass”,它将为您完成第一步。你将有一个nib文件和一个已经彼此了解的View Controller。


  1. 是的,你写的代码是你在你的头需要。只要确保将Scroll View对象连接到Interface Builder中的属性即可。
  2. 是!在完成Nib文件中指定的所有连接之后添加'viewDidLoad',因此您可以确信scrollView指向正确的对象(假设Nib中的所有内容均已正确连线,这很容易犯错)
+0

我确实使用了File对话框中的New UIViewController子类。我也已经在头文件中添加了属性,并在实现中使用了Synthesize关键字。 这是我的ViewController头像。那么它是否像通过名称调用/操纵控件一样简单(在本例中为Scroller)? #进口 @interface MyViewController:UIViewController中 { \t \t的UIScrollView *卷轴; } @property(nonatomic,retain)IBOutlet UIScrollView \t * scroller; @end – Kevin 2010-05-18 01:02:06

+0

假设我已经正确连线了,我怎样才能在ViewDidLoad事件的滚动视图中添加一个视图?它是否简单到“[scrollView addSubview:label];” – Kevin 2010-05-18 01:15:43

+0

我编辑了你的问题的答案。 – kubi 2010-05-18 02:19:05