滑动手势后值丢失

时间:2015-08-20 04:20:41

标签: ios arrays swift uitableview nsuserdefaults

我的滑动手势有问题。我插入NSUserdefaults函数,但它不起作用。每当我滑动时,每当我向后滑动时,值(你可以在图片中看到90)总是丢失。

我插入struct JSONActivity { static var jsondata = "" } class TableControllerActivities: UITableViewController { var items = NSMutableArray() var TableData:Array< String > = Array < String >() var json:String = "" @IBOutlet var myTableView: UITableView! var arrayOfMenu: [Activity] = [Activity]() @IBAction func setting(sender: AnyObject) { self.performSegueWithIdentifier("SettingView", sender: self) } override func viewDidLoad() { super.viewDidLoad() self.setUpMenu() self.myTableView.delegate = self self.myTableView.dataSource = self } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return arrayOfMenu.count //hitung banyak data pada array } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { //fungsi agar json dapat membaca tiap row pada storyboard var shortDate: String { let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "MM" return dateFormatter.stringFromDate(NSDate()) } let cell: CustomCellActivity = tableView.dequeueReusableCellWithIdentifier("cell") as! CustomCellActivity let menu = arrayOfMenu[indexPath.row] cell.setCell(menu.type, rightlabeltext: menu.unit, imagename: menu.image) //memasukkan data ke json, misal textbox isi 3 maka akan diwrite ke json 3 var data = Activitiesdata(type: menu.type, amount: String(cell.value).toInt()!) var json = JSONSerializer.toJson(data) JSONActivity.jsondata = json return cell } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } func do_table_refresh()//mengapdet / merefresh data { dispatch_async(dispatch_get_main_queue(), { self.tableView.reloadData() return }) } func setUpMenu() //membaca json pada setiap arraynya { var json: JSON = JSON (data: NSData()) let frame:CGRect = CGRect(x: 110, y: 300, width: view.frame.width, height: 700) self.tableView.frame = frame DataManager.getactivityDataFromFileWithSuccess{ (data) -> Void in json = JSON(data: data) let results = json["results"] for (index: String, subJson: JSON) in results { } for (var i = 0; i < json["Activity"].count; i++) { if let type = json["Activity"][i]["type"].string { //println("Tipe : \(type)") if let icon: AnyObject = json["Activity"][i]["icon"].string { self.items.addObject(icon) if let unit_id = json["Activity"][i]["unit_id"].string { //println("Logo : \(unit_id)") dispatch_async(dispatch_get_main_queue(), {self.tableView!.reloadData()}) var menu = Activity(type: type, unit: unit_id, image: icon as! String) self.arrayOfMenu.append(menu) self.TableData.append(type + unit_id ) self.do_table_refresh() } } } } } } } 的代码如下所示:

enter image description here

这是表控制器,它显示了JSON数据:

struct Activitymenu
{
    static var dataact:Array<String> = Array <String>()
    static var quantity = ""
}
class CustomCellActivity: UITableViewCell, UITextFieldDelegate {
    @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!

    var value = 0
    var checks:Bool = false
    var dx = 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 += 30
            qtytext.text = String(value)
            println(qtytext.text)

        }
        if(touch?.view == decrease)
        {
            if(value >= 30)
            {
                value -= 30;
                println(qtytext.text)

            }

        }
        qtytext.resignFirstResponder()//respon pada editing textbox
        self.endEditing(true)
        qtytext.delegate = self
        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 = Activitiesdata(type: leftlabel.text!, amount: qtytext.text.toInt()!)
        var temp:Activitiesdata
        temp = data
        var idx = 0
        if(temp.amount-30 > 0) {
            temp.amount -= 30

        }
        data = Activitiesdata(type: leftlabel.text!, amount: qtytext.text.toInt()!)
        var json = JSONSerializer.toJson(data)
        var tempJson = JSONSerializer.toJson(temp)
        for(var i = 0; i < Activitymenu.dataact.count; i++){
            if(Activitymenu.dataact[i] == tempJson){
                self.checks = true
                self.dx = i
            }
        }
        if(!self.checks) {
            Activitymenu.dataact.append(json)
        }
        else{
            Activitymenu.dataact[self.dx] = json
        }

    }

    func setCell(leftlabeltext: String, rightlabeltext: String, imagename: String)
    {
        self.leftlabel.text = leftlabeltext
        self.rightlabel.text = rightlabeltext
        self.myImageView.image = UIImage(named: imagename)

    }

}

这是单元格控制器,其值递增:

myquantity

我认为,价值仍然存在,但没有显示,为什么会这样?

valueqtyself.tabArray = [ { name: 'bob'}, { name: 'bib'}, { name: 'bab'}, { name: 'bub'}, { name: 'beb'}, ]; self.selectedTab = ko.observable(self.tabArray[0]); 文字具有相同的输出90..3。

0 个答案:

没有答案