我有一个自定义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?
请帮忙! 在此先感谢
答案 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方法中的逻辑实现错误。 在该方法中,根据您的响应数据设置行数。