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

var auxRow = 0 
var auxSection = 0 

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

// Bölüm Sayısı, tek bölümNeden numberOfRowsInSection, yalnızca bir bölüm için birden çok kez çağrılıyor?

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

// Satır Sayısı

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

// TableView yapılandır hücre

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 

} 

Çıktı:

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

numberOfRowsInSection yöntemi 4 kez çağrılmaktadır. Bu neden oluyor?

+0

Neden method numberOfRowsInSection içinde 4 kez girdiğimi anlamıyorum. Ben sadece bir bölüm var – PedroMeira

+1

@Lamar: OP neden sadece 1 bölüm (4 bölüm, bu nedenle bu yöntem sadece bir kez yürütülmelidir) olduğu için numberOfRowsInSection yöntemi 4 kez yürütüyor soruyor –

+0

numberOfRowsInSection yöntemi 4 kez yürütür, Çünkü? Sebebi nedir? – PedroMeira

cevap

5

Apple, UIKit'in temsilcilerinizden birini ne kadar sıklıkla çağırabileceğini garanti etmez. Çerçeveye sahipler. Onları bu değeri önleyebilmelerini bekleyebiliriz, ancak hiçbir şey onların bunu yapmasını gerektirmez.

2

Dahili olarak ne için kullanıldığını görmek için numberOfRowsInSection yönteminizin içinde bir kesme noktası ayarlayabilirsiniz. Birden fazla kez çağrılmamasının bir nedeni yoktur, çünkü masaüstünde kaç tane satır olduğunu bilmek için gereken zamana ihtiyaç vardır. 4 kez çağrılır çünkü Apple'ın tableview kodunun 4 farklı zamanda, bir bölümde kaç tane satır olduğunu bilmesi gerekir.

+0

4 kat numberOfRowsInSection ve adı numberOfSectionsInTableView -> katı bölüm 1 kez sıralı: 1 katı bölüm: 2 kez sıralı: 2 kez bölümü: 3 kez sıralı: 3 katı bölüm 4 kez sıra: 4 – PedroMeira

+1

@PedroMeira özür dilerim ama bunun ne anlama geldiğini anlamadım –

+1

Her iki yöntem de tablonun dahili olarak nasıl kullanıldığına bağlı olarak herhangi bir sayıda çağrılabilir. Bu, tablonuzun sahip olduğu satırların veya bölümlerin sayısına% 100 bağlı değildir. –

İlgili konular