2016-03-25 14 views
1
// Variable and ViewDidLoad 

var auxRow = 0 
var auxSection = 0 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

// Anzahl der Abschnitte, nur einen AbschnittWarum wird der numberOfRowsInSection für nur einen Abschnitt mehrmals aufgerufen?

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     auxSection += 1 
     print("times section: ", auxSection) 
     return 1 
    } 

// Anzahl der Zeilen

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    auxRow += 1 
    print("times row: ", auxRow) 
    return 2 
} 

// Tableview Konfigurieren Sie die Zelle

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let textCellIdentifier = "cellText" 
    let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) 
    let variable : String = indexPath.row.description 
    cell.textLabel?.text = variable 
    return cell 

} 

Ausgang:

times section: 1 
    times row: 1 
    times section: 2 
    times row: 2 
    times section: 3 
    times row: 3 
    times section: 4 
    times row: 4 

Die Methode numberOfRowsInSection wird 4 Mal aufgerufen. Warum passiert das?

+0

Ich verstehe nicht, warum geben Sie 4 mal in der Methode numberOfRowsInSection. Ich habe nur einen Abschnitt – PedroMeira

+1

@Lamar: OP fragt, warum die Methode numberOfRowsInSection 4 mal ausgeführt wird, weil er nur 1 Abschnitt hat (nicht 4 Abschnitt, also theoretisch sollte diese Methode nur einmal ausgeführt werden) –

+0

numberOfRowsInSection -Methode wird 4 mal ausgeführt, weil? Was ist der Grund? – PedroMeira

Antwort

5

Apple gibt keine Garantie, wie oft UIKit eine Ihrer Delegate-Methoden aufrufen darf. Sie besitzen den Rahmen. Wir können erwarten, dass sie diesen Wert zwischenspeichern, aber nichts erfordert sie dazu.

2

Sie können einen Haltepunkt innerhalb Ihrer numberOfRowsInSection Methode festlegen, um zu sehen, wofür intern verwendet wird. Es gibt keinen Grund, warum es nicht mehrfach aufgerufen werden sollte, da es immer dann aufgerufen wird, wenn die Tabellenansicht intern wissen muss, wie viele Zeilen es hat. Es wird 4 mal aufgerufen, weil der TableView-Code von Apple zu 4 verschiedenen Zeiten wissen muss, wie viele Zeilen in Ihrem einen Bereich sind.

+0

Es heißt 4mal numberOfRowsInSection und numberOfSectionsInTableView -> mal Schnitt: 1 mal Zeile: 1 mal Schnitt: 2 mal Reihe: 2 mal Abschnitt: 3 mal Zeile: 3 mal Schnitt: 4 mal Zeile: 4 – PedroMeira

+1

@PedroMeira tut mir leid, aber ich verstehe nicht, was das bedeuten soll –

+1

Beide Methoden können beliebig oft aufgerufen werden, je nachdem, wie die Tabellenansicht sie intern verwendet. Es ist nicht zu 100% an die Anzahl der Zeilen oder Abschnitte gebunden, die Ihre Tabellenansicht enthält. –

Verwandte Themen