我的疑问是关于“Prototype Cells”和下面的“dequeueReusableCellWithIdentifier”方法:
func dequeueReusableCellWithIdentifier(_ identifier: String, forIndexPath indexPath: NSIndexPath) -> AnyObject
假设我在StoryBoard中创建了一个View Cotroller并附加了一个Table View。在第一个场景中,我不会将表视图单元格附加到表视图。然后我创建以下类来控制我的View Controller:
import UIKit
class MyViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var myArray: String = [String]["One", "Two", "Three"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.tableView.delegate = self
self.tableView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("testCell") as UITableViewCell!
// I NEED THIS HERE
if (cell == nil) {
cell = UITableViewCell()
}
cell.textLabel!.text = "Test"
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.myArray.count
}
}
对不好的缩进感到抱歉。
在这种情况下,我需要if statement
中的func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
来检查方法dequeueReusableCellWithIdentifier
是否返回nil
。如果在StoryBoard中我将表格单元格(它将创建Protype单元格)附加到先前附加的表格视图并将其标识符设置为“testCell”,我还需要上面的if statement
吗?我猜不是因为我总是会让细胞出列,但我是对的吗?我在这里并没有考虑我创造了允许的最大细胞数量的情况。
感谢。
答案 0 :(得分:0)
dequeueReusableCellWithIdentifier:如果你使用正确的标识符,保证从故事板返回一个单元格,这样你就不需要测试cell == nil