将tableViewCell与UITextFields一起使用会从Array中提供相同的数据

时间:2016-12-27 10:37:15

标签: ios swift uitableview tableviewcell

我有一个自定义tableViewCell的部分,这个单元格有两个文本字段。 此单元格用于显示用户的电话号码 - 一个文本字段中的国家/地区代码以及其他文本字段中的数字。

我从服务中获取数据,如果用户有多部手机,则根据手机的数量,我正在更新numberOfRowsInSection和cellForRowAtIndexPath。直到这里我没有任何问题。

例如,如果用户有两部手机,我在numberOfRowsInSection中返回2,并显示两个单元格(相同的自定义单元格有两个textFields)。

问题: 我在两个单元格中都获得了相同的数据 - 第二个电话号码详细信息。但我需要在我的自定义单元格文本字段中依次显示电话号码列表。

这是我的代码

numberOfRowsInSection

setValue

的cellForRowAtIndexPath

    public override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

            switch section {

            case 3:                
                return (user.phones?.count)!

            default:
                return 1

            }
    }

PhoneCell

public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     case .ContactPhones:
            if contactCellExpanded == true {
                cell = tableView.dequeueReusableCellWithIdentifier("PhoneCell") as? PhoneCell

            }
        case .ContactEmail:
            if contactCellExpanded == true {
                cell = tableView.dequeueReusableCellWithIdentifier("EmailCell") as? EmailCell
            }

        default:
            break


}

据我所知,我使用for循环来获取数字列表,但是如何将每个值分配给单元格的textField?

请帮忙! 在此先感谢

2 个答案:

答案 0 :(得分:2)

因为在configure方法中你知道了单元格的索引路径,所以不要只使用

override func configure(withUser user: XtraUser, language: String, indexPath: NSIndexPath) {
    super.configure(withUser: user, language: language, indexPath: indexPath)

    self.countryCode.borderStyle = .RoundedRect
    self.teleNumber.borderStyle = .RoundedRect

    print("Enumerated \(user.phones?.enumerate())")

    if let userPhoneInfo = user.phones {
        self.countryCode.text = userPhoneInfo[indexPath.row].country
        self.teleNumber.text = userPhoneInfo[indexPath.row].number
    }
}

但无论如何,最好的解决方案是为每个单元格建立模型并将其传递给此配置方法。

答案 1 :(得分:0)

numberOfRows方法中的逻辑实现错误。 在该方法中,根据您的响应数据设置行数。