ios - self.tableView.delegate=self Swift




uitableview delegates (2)

Muss ich noch self.tableView.delegate = self zum eigentlichen View-Controller hinzufügen?

Nein. Sie tun dies, indem Sie die Verbindung im Storyboard herstellen. Sie sind genau dasselbe: eine Zuweisung an die Eigenschaft delegate , die auf zwei verschiedene Arten ausgedrückt wird (eine in Code, eine "grafisch" in Interface Builder). Sie müssen nur einen von ihnen machen.

Wenn Ihr View-Controller jedoch ein Tabellenansicht- Controller (UITableViewController-Unterklasse) wäre, würden Sie dies auch nicht tun, da der Table-View-Controller bereits die Datenquelle und Delegate der Tabellenansicht ist. Dasselbe gilt für einen Auflistungsansicht- Controller (UICollectionViewController-Unterklasse); Es ist bereits die Datenquelle und Delegate der Sammlungsansicht.

Wenn ich einen UIViewController habe und in Storyboards eine TableView daran anschließe, verbinde den Tableview-Ausgang und schließe dann die Datenquellen- und Delegate-Methoden über den Verbindungsinspektor an (cntrl + ziehe auf vc orangefarbenes Kreissymbol), muss ich noch hinzufügen self.tableView.delegate = self zum eigentlichen View Controller? Natürlich implementiere ich in der aktuellen Version die TableView-Daten / Delegate-Protokolle.

Auch ich nehme an, was auch immer die Antwort ist, würde dasselbe für einen Ansammlung Ansichtsteuerpult gehen, der über Storyboard auf die gleiche Weise angeschlossen wird?

Was sind die Vor- und Nachteile des Hinzufügens?

class FooController:UIViewController, UITableViewDataSource, UITableViewDelegate{


@IBOutlet weak var tableView: UITableView!


override func viewDidLoad() {
      super.viewDidLoad()
      self.tableView.delegate = self
   }


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
{


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
{
    }

Ich bin sowohl mit Matt und Quang Antwort einverstanden, aber manchmal müssen wir select tableview und seine Delegate und Datenquelle in anderen ViewController-Klasse zu diesem Zeitpunkt Verbindung mit Steckdose für Datenquelle und Delegat möglicherweise nicht Arbeit, die Ihre Delegaten Methoden möglicherweise nicht aufgerufen werden.

Beispiel -

Ich habe einen ViewController (Klasse A) mit einem Tableview. Ich muss diese Controler ganze Ansicht zu einer anderen Klasse (Klasse B) wiederverwenden

A.view.addSubview (B.view)

In diesem Fall müssen Sie die folgenden Codes eingeben

Class A:UIViewController, UITableViewDataSource, UITableViewDelegate{


@IBOutlet weak var tableView: UITableView!


override func viewDidLoad() {
      super.viewDidLoad()
      self.tableView.delegate = self
      self.tableView.datasource = self 
   }


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
{


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  }




uicollectionview