2016-08-13 25 views
0

Ich versuche, eine wachsende Zelle thisAusbau Zelle in Swift 3

hier ist mein heightForRowAt indexPath

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    switch indexPath.row { 
    case 0 : return 70 
    case 1 : 
     let cell = self.tableView(tableView, cellForRowAt: indexPath) 

     if let datePickerCell = cell as? MyDatePickerCell { 
      return datePickerCell.datePickerHeight() 
     } 
     return 260 
    case 2 : return 80 
    default : return 60 
    } 

} 

Die App auf

let cell = self.tableView(tableView, cellForRowAt: indexPath) 

mit implementieren klemmt die UITableView ist eingebettet in einem modalen UIViewController

warum ist t sein passiert?

+0

Verwenden Sie einen Delegaten, da die Tabelle in eine VC eingebettet ist? – Shades

+0

Die Tabellenansicht ist der 'MyDatePickerCell' Delegat – Carpsen90

+0

Aber die Klasse ist UIViewController? Hast du eine Steckdose für deinen Tisch? – Shades

Antwort

0

Ich denke, was passiert ist, dass Ihr TableView nach den Höhen Ihrer Zellen sucht, bevor Sie sie überhaupt laden. Sie versuchen also, die Zelle vor dem Laden abzurufen, was zu einem Absturz führt.

Um dies zu beheben, könnten Sie eine Dummy-Zelle erstellen, bevor Sie die TableView laden und diese Zelle in heightForCell verwenden. Dies ist jedoch besser anwendbar für die Berechnung variabler Höhen für jede Zelle. In diesem Fall kann die Anfangshöhe fest programmiert werden und die Zelle danach für Höhen verwendet werden.

+0

Ich habe eine Dummy-Zelle als Klassenvar hinzugefügt und in viewDidLoad gesetzt: 'datePickerCell = CreateDatePickerCell (style: UITableViewCellStyle.default, reuseIdentifier:" MyDatePickerCell ")', bleibt die App stecken – Carpsen90

+0

Wo bleibt es jetzt stecken? –

+0

Stuck = nichts passiert, es ist kein Absturz. und der modale uiviewcontroller wird nicht angezeigt – Carpsen90

Verwandte Themen