IOS的IBOutlet
在大多数情况下都很好。但请考虑一下:
我有一个UITableview
,其中包含两种类型的自定义单元格,两个单元格都有相同的子视图(1个图像视图和2个标签),只有2种类型的布局不同。现在我如何在我的代码中引用这些子视图?
当然,我可以定义UITableViewCell
的2个子类,并使用IBOutlet来引用它们。但这听起来不是很优雅,因为在行为方面,它们完全一样。
Android具有getViewById
功能。在iOS中,我可以从带有标识符的视图中获取子视图吗?
答案 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
访问其子视图。