2016-05-20 8 views
1

Ich mag meinen eigenen UITableViewController schaffen basierte auf meinererstellen eigene UITableViewController

class ProtectedViewController: UIViewController { 
    //... 
} 

Swift keine Mehrfachvererbung nicht unterstützt, so habe ich Quelle kopiert UITableViewController und nur UIViewController meine ProtectedViewController Klasse geändert:

@available(iOS 2.0, *) 
class ProtectedUITableViewController : ProtectedViewController, UITableViewDelegate, UITableViewDataSource { 

    public init(style: UITableViewStyle) 
    public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) 
    public init?(coder aDecoder: NSCoder) 

    public var tableView: UITableView! 
    @available(iOS 3.2, *) 
    public var clearsSelectionOnViewWillAppear: Bool // defaults to YES. If YES, any selection is cleared in viewWillAppear: 

    @available(iOS 6.0, *) 
    public var refreshControl: UIRefreshControl? 
} 

Aber eine Menge Fehler:

enter image description here

+0

Was möchten Sie erreichen, indem Sie "TableviewController" gemäß Ihrem ViewController erstellen? Wenn Sie weitere Methoden oder Hilfsmethoden hinzufügen möchten, erstellen Sie die Unterklasse von UITableViewController. – Wolverine

+0

Aber wenn ich eine Unterklasse von UITableViewController erstelle, sollte ich alle Methoden von ProtectedViewController kopieren ... Also wird Tonnen von ähnlichem Code haben – Arti

+0

Das ist nicht wie Unterklasse funktioniert ... Seit wann müssen Sie alles kopieren, wenn Sie Unterklassen erstellen? – luk2302

Antwort

0

Der Code wird nicht kompiliert, weil Sie die Methoden nicht implementiert haben. Das sieht so aus, als würde eine .h-Datei in Objective-C aussehen (nur die Methodensignaturen).

Sie sollten Implementierungen für alle init hinzufügen. Zum Beispiel: init(style: UITableViewStyle) { //do stuff in this init }

+0

Gibt es bessere Lösung, um Tabellenansicht nicht von UIViewController, sondern von meinem ProtectedViewController zu erben? :( – Arti

+0

Wollen Sie Um das Verhalten des UITableViewControllers oder eines UITableView zu ändern, benutze ich nie UITableViewController, sondern einen Vanilla UiViewController und erstelle mein eigenes UITableView und setze die dataSource und das Delegate Manual.Dies ist flexibler und erlaubt es dir eine eigene Klasse zu erstellen, die UITableViewDataSource implementiert und Delegieren. – Sajjon