2017-02-01 16 views
1

Ich habe eine Tabelle mit etwa 40 Datensätze. Ich möchte immer die Zelle auswählen, die sich in der Mitte des Bildschirms in einer bestimmten Position befindet. Immer wenn ich den Scrool vom Tisch mache, sollte er die ausgewählte Reihe in diejenige ändern, die sich gerade in der Mitte befindet. Es wäre das gleiche wie ein Picker, aber die Reihe hat mehrere Bilder und Etiketten, so dass es nicht möglich ist, einen Picker zu machen.Zelle automatische Auswahl in tableVIEW mit swift 3

Ist es möglich, etwas Ähnliches zu tun?

+0

verwendet werden, können Sie bei UICollectionView statt UITableView verwenden sollten. Mit collectionView haben Sie mehr Freiheit, Ihre Zellen anzuzeigen. –

Antwort

0

Ja, es ist möglich, aber es klingt wie eine schlechte Benutzeroberfläche.

UITableView ist eine Unterklasse von UIScrollview. Sie können sich als Delegat für die Bildlaufansicht festlegen und als Reaktion auf Delegate-Aufrufe wie scrollViewDidScroll(_:) und/oder scrollViewDidEndDecelerating(_:) die Auswahl ändern.

Allerdings denke ich, Sie hätten eine bessere Benutzererfahrung, wenn Sie eine Picker-Ansicht verwendet haben. Sie können die Auswahlansichten so einrichten, dass für jeden Index eine Ansicht verwendet wird. Daher sollten Sie in der Lage sein, eine benutzerdefinierte Ansicht bereitzustellen, die mehrere Bildansichten und Beschriftungen als Unteransichten enthält.

+0

aber mit einem Picker kann ich Komponenten in Abschnitten trennen? – breno

+0

Picker-Ansichten unterstützen mehrere Komponenten, ja. Jede Komponente scrollt separat. Ist es das was du willst? –

+0

Wenn Sie in Komponenten aufteilen, dann ist jede Komponente unabhängig auswählbar - was nicht wie das klingt, was Sie brauchen. – Russell

2

Diese ist mit einem UIPickerView möglich, und es klingt wie das, was Sie versuchen, neu zu erstellen.

Alles, was Sie tun müssen, ist die Ansicht in der UIPickerView zu ersetzen. Es gibt zwei Methoden, die Sie benötigen, die normalerweise nicht erforderlich - Sie müssen die Höhe angeben, und Sie müssen die Ansicht definieren, für die Reihe

func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat 
{ 
    return self.myRowHeight 
} 

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView 
{ 
    var myView = UIView(frame: CGRectMake(0, 0, pickerView.bounds.width, self.myRowHeight)) 
    // define & add whatever controls you need 
    myView.addSubview(myControl1) 
    myView.addSubview(myControl2) 

    return myView 
} 
Verwandte Themen