屏幕挂起并终止

时间:2018-01-18 12:35:26

标签: ios swift performance uitableview

屏幕被绞死并终止。我追踪到了因为我的while循环,屏幕被绞死并且app被终止。

while循环只运行10次。当我重新打开我的应用程序时,我的数据已被保存。

如何清空或取消分配UITableViewcell

让itemcell:TableViewCell = self.tableView.cellForRow(at:item)as! TableViewCell

由于self.tableView.dequeueReusableCell(withIdentifier: "listdetails", for: item)返回空值。我必须使用cellforRow。

请提供相关信息。

@IBAction func saveButton(_ sender: UIBarButtonItem) {
    let ndx = IndexPath(row:0, section: 0)
    var counter:Int = 0
    let cell = self.tableView.cellForRow(at: ndx) as! TableViewCell
    let locationNameCell = self.tableView.cellForRow(at: IndexPath(row:1, section: 0)) as! TableViewCell
        let shoppingDetails = ShoppingDetails(context:managedContext)
        let storeName =  cell.storeName.text!
        let storeFlag  =  validateShoppingList(storeName: storeName)
        if storeFlag == true {
            let shoppingDetails = ShoppingDetails(context:managedContext)
            var listDetails :ListDetails!
            while counter < sectionRowCount {
                let item = IndexPath(row:counter, section: 1)
                 var itemcell = self.tableView.cellForRow(at: item) as! TableViewCell

                let list = shoppingDetails.shoppingToList?.mutableCopy() as! NSMutableSet
                listDetails = ListDetails(context:managedContext)
                let listItem = itemcell.listItem.text!.trimmingCharacters(in: .whitespaces)
                listDetails.listItem = listItem
                var qty = itemcell.qtytextfield.text!
                if qty.isEmpty {
                    qty = "0"
                }
                var units =  itemcell.unitstextfield.text!
                if units.isEmpty {
                    units = ""
                }
                listDetails.qty = Int64(qty)!
                listDetails.units = itemcell.unitstextfield.text!
                listDetails.isChecked = false
                list.add(listDetails)
                shoppingDetails.addToShoppingToList(list)
                counter = counter + 1
                list.removeAllObjects()

            }
            shoppingDetails.storeName = storeName
            if locationNameCell.locationName.text != nil {
                shoppingDetails.location = locationNameCell.locationName.text!
            }
            shoppingDetails.initialLetter = (cell.storeName.text!).first?.description
            let seqNo:Int = ShoppingDetails.getSeqNo(managedObjectContext: managedContext) + 1
            shoppingDetails.seqNo =  Int32(seqNo)
            coreData.saveContext()
            let vc = storyboard!.instantiateViewController(withIdentifier: "StoreDisplayController") as! StoreDisplayController
            vc.managedContext = managedContext
            vc.coreData = coreData
            vc.storeName = cell.storeName.text!
          //  managedContext.delete(shoppingDetails)
         //   managedContext.delete(listDetails)
           // self.present(vc, animated:true, completion:nil)
          //  self.navigationController?.popToViewController(vc, animated: true)
            self.navigationController?.pushViewController(vc, animated: true)    
    }

enter image description here

1 个答案:

答案 0 :(得分:0)

将此数据保存在此方法中,因为用户将滚动以填充所有内容

 func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
   // ...

   //fill model array parameters from cell properties before data lost

            var itemcell = self.tableView.cellForRow(at: indexPath) as! TableViewCell

            let list = shoppingDetails.shoppingToList?.mutableCopy() as! NSMutableSet
            listDetails = ListDetails(context:managedContext)
            let listItem = itemcell.listItem.text!.trimmingCharacters(in: .whitespaces)
            listDetails.listItem = listItem
            var qty = itemcell.qtytextfield.text!
            if qty.isEmpty {
                qty = "0"
            }
            var units =  itemcell.unitstextfield.text!
            if units.isEmpty {
                units = ""
            }
            listDetails.qty = Int64(qty)!
            listDetails.units = itemcell.unitstextfield.text!
            listDetails.isChecked = false
            list.add(listDetails)
            shoppingDetails.addToShoppingToList(list)


}

然后单击“保存”按钮时,检查该项目的模型数组并滚动到该索引路径以填充