试图从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" 
    }     
    } 

两种方式都很好,但取决于你想要的目标实现。你可以做如下: -

  1. 你可以创建属性并连接你的标签从xib。稍后在您的代码中,您可以更改它的文本,如下所示: -

    @IBOutlet var usernameLabel:UILabel! 覆盖func viewDidLoad(){ super.viewDidLoad() //在加载视图后,通常从一个笔尖执行任何其他设置。 self.usernameTxt?.text =“some text” }

  2. 您可以以编程方式创建并将其作为子视图添加到视图中。代码: -

    VAR标签=的UILabel(帧:CGRectMake(FRAME)) label.text = “一些文本” youView.addSubview(标签)