试图从UIView访问标签
问题描述:
我已经创建了一个.xib文件,其中有一堆标签可用于SwipeView。我的问题是我不能/不知道如何访问和加载视图后更改其文本:试图从UIView访问标签
let newView = NSBundle.mainBundle().loadNibNamed("SwipeHelperView", owner: self, options: nil)[0] as UIView
for (var subview) in newView.subviews
{
if (subview.isKindOfClass(UILabel) && subview.tag == 0)
{
subview.text = "asdaS" //ERROR: cannot assign 'text' in 'subview'
}
}
难道是更容易地创建现货标签,像这样:
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(0, 0)
label.text = "some text"
newView.addSubview(label)
而不是试图从“newView”UIView访问它们?有没有“推荐”的方式,或者是关于prefferences?
答
你应该将其丢:
let newView = NSBundle.mainBundle().loadNibNamed("SwipeHelperView", owner: self, options: nil)[0] as UIView
for subview in newView.subviews as [UIView]
{
if subview.tag == 0
{
if let label = subview as? UILabel {
label.text = "asdaS"
}
}
}
如果您设置的自定义标签(例如333),你可以得到它,因为它:
if let label = newView.viewWithTag(333) as? UILabel {
label.text = "TEST"
}
答
it will be helpful if you make labels programmatically and add it in your newView.
VAR子视图
for subview:AnyObject in newView.subviews
{
if (subview.isKindOfClass(UILabel) && subview.tag == 0)
{
var label=subview as UILabel
label.text="some text"
}
}
答
两种方式都很好,但取决于你想要的目标实现。你可以做如下: -
-
你可以创建属性并连接你的标签从xib。稍后在您的代码中,您可以更改它的文本,如下所示: -
@IBOutlet var usernameLabel:UILabel! 覆盖func viewDidLoad(){ super.viewDidLoad() //在加载视图后,通常从一个笔尖执行任何其他设置。 self.usernameTxt?.text =“some text” }
-
您可以以编程方式创建并将其作为子视图添加到视图中。代码: -
VAR标签=的UILabel(帧:CGRectMake(FRAME)) label.text = “一些文本” youView.addSubview(标签)