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
}

最佳答案

您可以创建一个自定义类,该类将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是否会将任何内容打印到输出。如果没有,我相信你的UILabels可能是零。

10-08 17:00