TableViewController使用静态单元格检测行点击

时间:2016-10-11 15:33:52

标签: ios uitableview static swift3 didselectrowatindexpath

我使用的TableViewController有一个包含2个静态单元格的表。它嵌入在视图控制器中。当我点击单元格时,我无法运行didSelectRowAtIndexPath。我已经检查了this问题以及this问题中的所有常见嫌疑人。当我在带有动态表的viewcontroller中尝试使用表视图时,我能够让它工作得很好。将TableViewController用于不允许使用didSelectRowAtIndexPath的静态单元格是否存在问题?

以下是我在TableViewController的自定义类中的内容:

import UIKit

class OptionTableViewController: UITableViewController {


@IBOutlet var optionsTable: UITableView!


let numberOfRows = [7,2]

let cellIdentifier = "OptionCells"

override func viewDidLoad() {
    super.viewDidLoad()

    self.optionsTable.delegate = self
    self.optionsTable.dataSource = self

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 2
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    var rows = 0

    if(section < numberOfRows.count){
        rows = numberOfRows[section]
    }

    return rows

}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
    print("You selected cell #\(indexPath.row)!")

}
}

更新 我尝试替换tableviewcontroller和它嵌入的viewcontroller,但我仍然无法让didSelectRowAtIndexPath运行。

更新2: 有谁知道这是否可以在Swift 3中使用?我找到了一个使用Swift 2.2和tableviewcontroller以及静态单元here的工作示例。也许用Swift 3有一个bug呢?

2 个答案:

答案 0 :(得分:5)

哇,所以事实证明,在Swift 3中,didSelectRowAtIndexPath不再正确。正确的用法是nowSelectRowAt。除了偶然发现的this问题,我没有看到这提到的任何地方。

:此:

Int

不是

var pickerDataVisitLocation = [203: "Home", 204: "Hospital", 205: "Other"]

// say for a given uniqId 204
let givenId = 204
if let location = pickerDataVisitLocation[givenId] {
    print(location) // Hospital
}

答案 1 :(得分:1)

你可能会把错误的表视图连接起来。通常,UITableViewController在view属性中有tableView,您不需要以编程方式设置数据源和委托。