iOS - 如何在视图控制器中引用视图?

时间:2016-02-13 23:49:50

标签: ios swift

从Android背景中,每个UI元素(即“小部件”)都有一个id。例如,userNameInputText可以是映射到特定文本字段的ID。什么是iOS的模拟?

在Xcode中,我在故事板中定义视图,然后ctrl +将它们拖到我的ViewController类中。这允许我设置监听器等。但是,似乎某些东西被遮挡了。监听器如何引用特定视图?在android中这很明显,因为你必须明确地提供元素的id。

2 个答案:

答案 0 :(得分:5)

  

我在故事板中定义视图,然后按住Ctrl键并将它们拖到我的ViewController类中。这允许我设置监听器等

Control-drag不仅允许您添加侦听器。它还允许您添加 outlet 连接。出口连接在代码中如下所示:

@IBOutlet var myUIElement: UIXXXX!

您可以使用标识符myUIElement来引用该视图。以下是如何添加插座连接的示例:

  • 按住Control键并拖动视图,将UIImageView说成View Controller类,然后显示:

enter image description here

在那里看到“Outlet”这个词?这意味着您要添加插座连接。我们打电话给插座myImage。所以在代码中,这将是这样的:

@IBOutlet weak var myImage: UIImageView!

现在您可以参考故事板中的图像视图!就像在Java中一样,但更短。让我用Java写这个,这样你就能得到更清晰的画面:

private ImageView myImage;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setLayout(R.layout.someLayout);
    myImage = (ImageView)findViewById(R.id.someId);
}

如果你想回到原型表视图单元格,还有另一种方法:

  • 在故事板中,选择单元格,然后向单元格添加重用标识符,例如my cell
  • 在表视图控制器中,调用此方法:

    let cell = tableView.dequeueReusableCellWithIdentifier("my cell")
    

现在你可以拿到牢房了!

答案 1 :(得分:1)

如果您查看xib文件的内容,您会发现类似的内容 <view contentMode="scaleToFill" id="iN0-l3-epB">

所以我认为xCode使用生成的标识符将这些视图连接到您的IBOutlets。