首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >didSelectRowAt indexPath: IndexPath -总是返回前面的选择

didSelectRowAt indexPath: IndexPath -总是返回前面的选择
EN

Stack Overflow用户
提问于 2018-09-10 13:37:22
回答 1查看 185关注 0票数 0

我有一个UITableView,一个用于自定义单元格的自定义类,以及我的ViewController swift:

代码语言:javascript
复制
private var model_firma = [Firme]()
var firme = Firme(IDFirma: 1, Denumire: "ZZZZZ", Reprezentant: "JohnDoe")
    model_firma.append(firme);
    firme = Firme(IDFirma: 2, Denumire: "YYYYYYY", Reprezentant: "JohnDoe")
    model_firma.append(firme);

和:

代码语言:javascript
复制
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return model_firma.count
}

public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let cell = tableView.cellForRow(at: indexPath) as! FirmeTableViewCell
        let item = cell.labelDenumire
        labelSelectedCompany.text = item?.text
}

项目显示正确。但是,在第一次单击表视图时,任何项目都不会发生任何事情。在另一项上的第二次单击\选择时,将检索前一个项。

使用来自模型的数据向UITableView添加行的函数:

代码语言:javascript
复制
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath) as! FirmeTableViewCell
let text = model_firma[indexPath.row]

cell.labelDenumire.textColor = UIColor(rgb: 0xffffff)
cell.labelDenumire.text = text.Denumire

好像我自己想不出来。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 13:43:16

从逻辑上讲,在didSelectRowAt中,我假设您应该直接从数据源(model_firma)读取所需的数据,而不是从它读取单元格:

代码语言:javascript
复制
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let currentModel = model_firma[indexPath.row]
    labelSelectedCompany.text = currentModel.Denumire
}

边栏注释:

  • 在Swift中,我们通常遵循骆驼的命名惯例:
    • modelFirma而不是model_firma
    • 变量名应该以一个小写字母开头:denumire而不是Denumire

而不是:

代码语言:javascript
复制
private var model_firma = [Firme]()
var firme = Firme(IDFirma: 1, Denumire: "ZZZZZ", Reprezentant: "JohnDoe")
    model_firma.append(firme);
    firme = Firme(IDFirma: 2, Denumire: "YYYYYYY", Reprezentant: "JohnDoe")
    model_firma.append(firme);

最好是:

代码语言:javascript
复制
private var firmes = [Firme(IDFirma: 1, Denumire: "ZZZZZ", Reprezentant: "JohnDoe"),
                      Firme(IDFirma: 2, Denumire: "YYYYYYY", Reprezentant: "JohnDoe")]

删除;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52259042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档