如何在iOS中实现Android的getViewById?

时间:2017-06-07 06:34:11

标签: ios iphone uitableview

IOS的​​IBOutlet在大多数情况下都很好。但请考虑一下:

我有一个UITableview,其中包含两种类型的自定义单元格,两个单元格都有相同的子视图(1个图像视图和2个标签),只有2种类型的布局不同。现在我如何在我的代码中引用这些子视图?

当然,我可以定义UITableViewCell的2个子类,并使用IBOutlet来引用它们。但这听起来不是很优雅,因为在行为方面,它们完全一样。

Android具有getViewById功能。在iOS中,我可以从带有标识符的视图中获取子视图吗?

2 个答案:

答案 0 :(得分:1)

您可以为这些子视图指定标记值,您可以使用viewWithTag函数获取这些子视图。例如,在带有标签100的swift for say标签中,您可以使用

    let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath)
    let label = cell.viewWithTag(100) as? UILabel
    label?.text = "label from tag"

答案 1 :(得分:1)

根据您的情况,优雅的解决方案是在Storyboard中的TableView或两个Xib文件中定义两个具有不同布局的单元格。然后,将它们绑定到同一个类。

在Storyboard或Xib中定义的分隔单元在Android中意味着相同的东西:分隔的布局XML文件,您希望通过getViewById访问其子视图。