2016-11-19 1 views
2

Ich versuche, Datumsauswahl in einer statischen Zelle zu öffnen, und ich erhalte diesen Compilerfehler. Irgendwelche Gedanken?Kann Wert des Nichtfunktionstyps nicht aufrufen 'UITableView

Der Fehler in Zeile lautet: "Rückkehr super.tableView (Tableview, heightForRowAtIndexPath: indexPath)"

import UIKit 

class TableViewController: UITableViewController { 

@IBOutlet weak var detailLabel: UILabel! 
@IBOutlet weak var datePicker: UIDatePicker! 
var datePickerHidden = false 

override func viewDidLoad() { 
    super.viewDidLoad() 
    datePickerChanged() 
    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = false 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
} 

@IBAction func datePickerValue(_ sender: UIDatePicker) { 
    datePickerChanged() 
} 

func datePickerChanged() { 
    detailLabel.text = DateFormatter.localizedString(from: datePicker.date, dateStyle: DateFormatter.Style.short, timeStyle: DateFormatter.Style.short) 
} 


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if indexPath.section == 0 && indexPath.row == 0 { 
     toggleDatepicker() 
    } 
} 

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if datePickerHidden && indexPath.section == 0 && indexPath.row == 1 { 
     return 0 
    } 
    else { 
     return super.tableView(tableView: tableView, didSelectRowAtIndexPath: indexPath) 
    } 
} 

func toggleDatepicker() { 

    datePickerHidden = !datePickerHidden 

    tableView.beginUpdates() 
    tableView.endUpdates() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

Wie sollte ich dieses Problem beheben Problem?

Antwort

3

Angenommen, Sie nennen dies in einer UITableViewController Klasse. Nun, UITableViewController hat eine Eigenschaft namens tableView. Wenn Sie also mit super.tableView anfangen, denkt es, dass Sie nach der Eigenschaft fragen, weshalb es den Fehler gibt, dass tableView vom Nichtfunktionstyp ist.

Sehen Sie, ob return super.tableView.rowHeight für Ihren Fall funktioniert.

+0

Der Fehler verschwindet und es läuft. Wenn ich jedoch zwischen der Datumsauswahl umschalte, stürzt die Anwendung sofort ab und ich erhalte den Fehler "Thread 1: Signal SIGABRT" in dieser Zeile in AppDelgate: Klasse AppDelegate: UIResponder, UIApplicationDelegate { –

+0

Etwas ist wahrscheinlich null; siehe http://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-valu – Paulw11

+0

Das kann oder kann nicht zu Ihrer ursprünglichen Frage oder diesem verwandt sein Lösung. Wenn meine Antwort Ihr ursprüngliches Problem gelöst hat, würde ich mich freuen, wenn Sie die Antwort akzeptieren würden. Dann sollten Sie versuchen, detaillierte Informationen zu Ihrem neuen Fehler zu erhalten und eine weitere Frage zu stellen. Die Community wird versuchen, Ihnen zu helfen. – Frankie

Verwandte Themen