我有一个问题,我正在使用 for 打印 json 数据并使用数组列表,但是当我单击第 0 个数组时,第 5 个和第 10 个自身增量,仅显示发生变化,而不是实际数量......
这是示例,我单击了鸡蛋按钮,然后向下滚动直到找到第 5 个数组也显示“1”数量,当我滚动到第 10 个数组时出现同样的问题,我认为每第 5 个数组都会出现错误..但是其余的(第一个、第二个、第三个等没有得到错误,正如你所看到的,第一个数组=面包仍然是空白的)
这是你们可能会有所帮助的代码
import UIKit
struct Nutritionmenu
{
static var data:Array<String> = Array <String>()
}
class CustomCell: UITableViewCell {
@IBOutlet weak var leftlabel: UILabel!
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var rightlabel: UILabel!
@IBOutlet weak var qtytext: UITextField!
@IBOutlet weak var decrease: UIImageView!
@IBOutlet weak var imageheader: UIImageView!
var value = 0
var check:Bool = false
var idx = 0
override func awakeFromNib() {
super.awakeFromNib()
self.myImageView.userInteractionEnabled = true
self.decrease.userInteractionEnabled = true
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
qtytext.resignFirstResponder()
self.endEditing(true)
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch: UITouch? = touches.first as? UITouch
if(touch?.view == myImageView)
{
value += 1
qtytext.text = String(value)
//println(qtytext.text)
}
if(touch?.view == decrease)
{
if(value >= 1)
{
value -= 1;
}
qtytext.text = String(value)
let myquantity = qtytext.text
NSUserDefaults.standardUserDefaults().setObject(myquantity, forKey: "SavedStringKey")
NSUserDefaults.standardUserDefaults().synchronize()
let stringKey = NSUserDefaults.standardUserDefaults()
qtytext.text = stringKey.stringForKey("SavedStringKey")
}
var data = Nutritiondata(type: leftlabel.text!, amount: qtytext.text.toInt()!)
var temp:Nutritiondata
temp = data
var idx = 0
if(temp.amount-1 > 0) {
temp.amount -= 1
}
data = Nutritiondata(type: leftlabel.text!, amount: qtytext.text.toInt()!)
var json = JSONSerializer.toJson(data)
var tempJson = JSONSerializer.toJson(temp)
for(var i = 0; i < Nutritionmenu.data.count; i++){
if(Nutritionmenu.data[i] == tempJson){
self.check = true
self.idx = i
}
}
if(!self.check) {
Nutritionmenu.data.append(json)
}
else{
Nutritionmenu.data[self.idx] = json
}
}
func setCell(leftlabeltext: String, rightlabeltext: String, imagename: String)
{
self.leftlabel.text = leftlabeltext
self.rightlabel.text = rightlabeltext
self.myImageView.image = UIImage(named: imagename)
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("cell") as! CustomCell
let menu = arrayOfMenu[indexPath.row]
cell.setCell(menu.type, rightlabeltext: menu.unit, imagename: menu.image)
var data = Nutritiondata(type: menu.type, amount: String(cell.value ).toInt()!)
var json = JSONSerializer.toJson(data)
JSONNutrisi.jsondata = json
return cell
}
这是我的菜单功能
class Nutritiondata
{
var type = "type"
var amount = 0
//var date = "Date"
init (type: String, amount: Int)
{
self.type = type
self.amount = amount
//self.date = date
}
}
我刚刚发现问题是表没有创建新数组而是重用它,所以当我单击第0个数组时,第5个数组也增加,第1个数组第6个也增加等等。但是如何修复它?
最佳答案
选择时,您将更改单元格的值。因此,当 TableView 重用它时,它会显示内存中的可用单元格。然后它就具有您增加的值。您应该将“cell.value”保留在与 arrayOfMenu 索引有关系的数组中。单元格不应用于保存数据。
关于ios - 不需要/未单击的对象自行增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32002438/