2017-06-07 111 views
0

IOS的​​IBOutlet在大多數情況下都不錯。但考慮一下:如何在iOS中實現Android的getViewById?

我有一個UITableview其中包含兩種類型的自定義單元格,兩個單元格具有相同的子視圖(1圖像視圖和2個標籤),只有2種類型佈局不同。現在我如何在代碼中引用這些子視圖?

我當然可以定義UITableViewCell的2個子類,並使用IBOutlet來引用它們。但這聽起來不是很優雅,因爲行爲方面,它們完全一樣。

Android有一個getViewById函數。在iOS中,我可以通過某個標識符從視圖中獲取子視圖嗎?

+2

是的,我們可以使用viewWithTag函數 –

+0

這很尷尬,我應該先查找doc ... – NeoWang

回答

1

您可以給這些子視圖賦予標記值,並且可以使用viewWithTag函數獲取這些子視圖。例如,在迅速與標籤100說的標籤,你可以使用

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

根據您的情況,優雅的解決方案是定義兩個小區中的TableView不同的佈局在故事板或兩個XIB文件。然後,將它們綁定到同一個類。

在Storyboard或Xib中定義的分隔單元表示Android中相同的事物:分隔佈局XML文件,您希望通過getViewById訪問其子視圖。