2017-06-07 22 views
0

IOS IBOutlet ist in den meisten Szenarien in Ordnung. Aber bedenken Sie dies:Wie erreicht man Android's getViewById in iOS?

Ich habe eine UITableview, die 2 Arten von benutzerdefinierten Zellen enthält, beide Zellen haben die gleichen Subviews (1 Bildansicht und 2 Etiketten), nur die 2 Arten Layout unterschiedlich. Wie referenziere ich nun diese Subviews in meinem Code?

Ich könnte natürlich 2 Unterklassen von UITableViewCell definieren, und verwenden Sie IBOutlet, um sie zu verweisen. Aber das klingt nicht sehr elegant, so verhaltensmäßig sind sie genau gleich.

Android verfügt über eine getViewById Funktion. Bekomme ich in iOS eine Unteransicht aus einer Ansicht mit einem Bezeichner?

+2

ja, können wir ViewWithTag Funktion verwenden –

+0

das ist peinlich, ich hätte doc zuerst nachgeschlagen ... – NeoWang

Antwort

1

Sie können diesen Unteransichten Kennzeichenwerte zuweisen, und Sie können diese Unteransichten mithilfe der viewWithTag-Funktion abrufen. Zum Beispiel in swift für etwa Etikett mit 100-Tag können Sie

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

Entsprechend Ihre Situation verwenden, die elegante Lösung, um zwei Zellen mit unterschiedlichen Layouts in Tableview in einem Storyboard oder in zwei Xib Dateien sind. Und dann, binden Sie sie an die gleiche Klasse.

Die in Storyboard oder Xib definierte separate Zelle bedeutet dasselbe in Android: getrennte Layout-XML-Dateien, auf die Sie durch getViewById zugreifen möchten.