2017-11-23 3 views
0

Ich habe eine Tabellenansicht in Swift mit Headern, die Zellen erweitern oder kontrahieren, aber aus irgendeinem Grund gibt es zusätzliche Zeilentrenner in der Mitte der Seite ohne Grund und die Bezeichnung in Der Header wird nicht angezeigt.TableView Display Issues - Swift

enter image description here

class ExpandableHeader: UITableViewHeaderFooterView { 
    var section: Int = 0 
    let expandLabel = UILabel() 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
     // return number of section in table from data 
     return list.count 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // return number of rows in each section from data 
     return list[section].items.count + 1 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     // Create cell with the identifier which was set in the storyboard prototype cell 

     // set cell data/name from our data object 
     if indexPath.row < list[indexPath.section].items.count { 
      let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
      cell.textLabel?.text = list[indexPath.section].items[indexPath.row].name 
      return cell 
     } else { 
      let cell = tableView.dequeueReusableCell(withIdentifier: "custom", for: indexPath) 
      return cell 
     } 

    } 

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    // create a header of type of our subclassed header with section number 
    let headerView = ExpandableHeader() 

    headerView.expandLabel.text = "+" 

    headerView.expandLabel.frame.size.height = 30 
    headerView.expandLabel.frame.size.width = 30 
    headerView.expandLabel.textAlignment = NSTextAlignment.center 

    headerView.addSubview(headerView.expandLabel) 

    headerView.expandLabel.frame.origin.x = view.frame.maxX - headerView.expandLabel.frame.width 

    // assign selected/current section number to the header object 
    headerView.section = section 

    // create Gesture Recognizer to add ability to select header to this cutsom header with an action 
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(headerClicked(sender:))) 

    // add Gesture Recognizer to our header 
    headerView.addGestureRecognizer(tapGesture) 

    return headerView 
} 

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

    // check if row's section expanded parameter is set to true or false. set height of rows accordingly to hide or show them 
    if list[indexPath.section].expanded == true { 
     return 44 
    } else { 
     return 0 
    } 
} 

habe ich die entsprechenden Codezeilen oben. Wenn Sie die Zeilenhöhe auf 0 ändern, sollten die Zellentrennlinien auch in Höhe 0 geändert oder ausgeblendet werden?

Warum geht die Kopfzeile in den einzelnen Abschnitten nicht bis zur rechten Seite des Bildschirms, wenn das Storyboard den ganzen Weg zur rechten Kante hat? Wird deshalb auch die Beschriftung für die Kopfzeile nicht angezeigt? Weil die rechte Kante abgeschnitten wird?

Sorry für die grundlegenden Fragen, ich bin immer noch den Dreh raus, also würden alle Vorschläge sehr geschätzt werden.

+0

nur schreiben self.yourtableview.tableFooterView = UIView() in viewDidLoad –

+0

Ist das zu reparieren den Zufall Zellseparatoren oder zu beheben, um das Text-Label in denen verstecken Tabellenansichtszelle, die nicht angezeigt wird, weil sie abgeschnitten ist? – user3628240

Antwort

0

Um zusätzliche Reihenteiler Verwendung unter Codezeilen

let backgroundView = UIView(frame: CGRect.zero) 
self.tableView.tableFooterView = backgroundView //instead of tableView give your tableView name