通过Swift [Mac OSX]中的ID /标识访问UI控件?

时间:2014-12-30 23:29:01

标签: macos swift

我希望能够通过ID(或标识符)访问UI控件(即:NSTextField)。

我可以:sender.identifier获取我想要的ID,但我似乎无法获取/设置值。

例如:如果我有一个名为 Button_01 的按钮,当用户点击此按钮时,我想要更新名为 Name_01的字段 即可。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

Mac OS中的每个NSControl都有一个标签属性(以前是-tag和-setTag:)

@property NSInteger tag; // Obj-C
var tag: Int // Swift

这允许您使用数字值来控制任何控件。因此,如果您想要按标签区分一堆按钮,则可以编写一些代码,如:

button1.tag = 1; // Obj-C/Swift code (can omit the ; in Swift)
button2.tag = 2;

然后您可以简单地比较发件人的标签。如果您在Mac OS中使用xib或故事板,则还可以在Interface Builder中设置这些值。

NSControl是NSView的子类,然后有方法func viewWithTag(_ aTag: Int) -> AnyObject?,可以按以下方式使用:

let buttonWithTag = containerView.viewWithTag(tag)

其中containerView是包含所有按钮的视图,tag是您之前为每个按钮指定的标记。

答案 1 :(得分:0)

首先:您应该为对象创建和出口,例如" Name_01" (这是TextField的错误名称)

然后您可以使用以下命令轻松更新它:

txtFieldName.text = ""

OR:如果要使用标识符,可以为每个视图元素设置标记ID,并使用以下内容获取此元素:

viewWithTag(ID)