循环通过UIView并更新UILabel值

时间:2015-03-18 22:40:01

标签: ios objective-c swift

func setNavigation(titleText: String, subtitleText: String) {
    // Need to update two labels inside of subtitleView

    self.navigationItem.titleView = self.subtitleView
}

subtitleView变量的类型为UIView。视图只包含两个标签,我需要将这两个标签设置为函数参数值。如何通过subtitleView循环查找这两个标签并更新其值?

我试过的这段代码找到了标签,但未能将文本值更新为“A”:

func setNavigation(titleText: String, subtitleText: String) {
    for (var i = 0; i < self.subtitleView.subviews.count; i++) {
        if self.subtitleView.subviews[i].isKindOfClass(UILabel) {
            var labelReference: UILabel = self.subtitleView.subviews[i] as UILabel
            labelReference.text = "A"
        }
    }

    self.navigationItem.titleView = self.subtitleView
}

1 个答案:

答案 0 :(得分:0)

您可以创建一个自定义类,该类是UIView的子类,并且包含2个UILabel的变量。

或者您可以遍历UIView的所有子视图并设置标签:

for view in self.subtitleView.subviews as [UIView] {
    if let labelReference = view as? UILabel{
         labelReference.text = "A"
         NSLog("Updating Label")
    }
}

如果文本没有更新,请检查上面的NSLog是否在输出中打印任何内容。如果没有,我相信你的UILabel可能是零。