表格查看单元格和出列的初始单元格可用性

时间:2015-02-03 20:55:54

标签: ios xcode swift

我的疑问是关于“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吗?我猜不是因为我总是会让细胞出列,但我是对的吗?我在这里并没有考虑我创造了允许的最大细胞数量的情况。

感谢。

1 个答案:

答案 0 :(得分:0)

dequeueReusableCellWithIdentifier:如果你使用正确的标识符,保证从故事板返回一个单元格,这样你就不需要测试cell == nil