مشكلة اظهار سطر جديد فارغ في tableView عند الضغط على الرجوع

Hashem • منذ سنة

السلام عليكم

اهل الخبره في سويفت 

انا لدي مشروع تطبيق ايفون بقاعدة بيانات CoreData  مشكلتي اذا دخلت على صفحة اضافة البيانات ثم ضغط على زر الرجوع دون ان اضيف بيانات يقوم بإضافة سطر فارغ في الجدول هل من ممساعدة

هذه الاكواد المستخدمه

 

//
//  AddVC.swift
//  NoteCard
//
//  Created by Hashem on ١٤ رمضان، ١٤٣٩ هـ.
//  Copyright © ١٤٣٩ هـ Hashem. All rights reserved.
//

import UIKit
import CoreData
class AddVC: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate,UITextFieldDelegate {
    
    @IBOutlet weak var subject: UITextField!
    @IBOutlet weak var emailText: UITextField!
    @IBOutlet weak var userNameText: UITextField!
    @IBOutlet weak var passwordText: UITextField!
    @IBOutlet weak var othreDataText: UITextView!
    @IBOutlet weak var myPickerView: UIPickerView!
    @IBOutlet weak var myView: UIView!
    //var newNote: MyNotes!
    var newNote = MyNotes(context: context)
    var dataPiker = ["فيزا","ماستركارد","ايميل","بطاقة","ابل ستور","ابل","تويتر","سناب شات","انستقرام","ايكلاود","ملف","اندرويد"]

    override func viewDidLoad() {
        super.viewDidLoad()
        myView.isHidden = true
        myPickerView.delegate = self
        myPickerView.dataSource = self
    }
    
    // MARK: -
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return dataPiker.count
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return dataPiker[row]
    }
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        let item = dataPiker[row]
        let visa = UIImage(named: "visa.png")
        let mastercard = UIImage(named: "mastercard.png")
        let creditCard = UIImage(named: "creditCard.png")
        let email = UIImage(named: "email.png")
        let android = UIImage(named: "Android.png")
        let apple = UIImage(named: "apple.png")
        let appStore = UIImage(named: "AppStore.png")
        let file = UIImage(named: "file.png")
        let instagram = UIImage(named: "instagram.png")
        let snapchat = UIImage(named: "snapchat.png")
        let twitter = UIImage(named: "tw.png")
        let iCloud = UIImage(named: "iCloud.png")
        
        //newNote = MyNotes(context: context)
        switch(item){
        case "فيزا":
            newNote.image = visa
        case "ماستركارد":
            newNote.image = mastercard
        case "بطاقة":
            newNote.image = creditCard
        case "ايميل":
            newNote.image = email
        case "اندرويد":
            newNote.image = android
        case "ابل":
            newNote.image = apple
        case "ابل ستور":
            newNote.image = appStore
        case "ملف":
            newNote.image = file
        case "انستقرام":
            newNote.image = instagram
        case "سناب شات":
            newNote.image = snapchat
        case "تويتر":
            newNote.image = twitter
        case "ايكلاود":
            newNote.image = iCloud
        default: break
        }
    }
    @IBAction func saveButton(_ sender: Any) {
        newNote.subject = subject.text!
        newNote.data = emailText.text!
        newNote.username = userNameText.text!
        newNote.password = passwordText.text!
        newNote.othrdata = othreDataText.text!
        newNote.date = NSDate() as Date
        navigationController?.popViewController(animated: true)
        // performSegue(withIdentifier: "GoTable", sender:self)
        do{
            ad.saveContext()
            print("title \(newNote)")
            ProgressHUD.showSuccess("تمت الاضافة")

        }
        catch{
            ProgressHUD.showError("لم تتم الاضافة")
            print("Error")
        }
    }
    @IBAction func backButton(_ sender: Any) {
       navigationController?.popViewController(animated: true)
        //performSegue(withIdentifier: "GoTable", sender:self)

    }
    @IBAction func pickerButton(_ sender: Any) {
        if myView.isHidden {
            myView.isHidden = false
        }
    }
    
    @IBAction func seleactButton(_ sender: Any) {
        myView.isHidden = true

    }
    @IBAction func addImageButton(_ sender: Any) {
    }
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
   
    

}

كود tableView


import UIKit
import CoreData
import GoogleMobileAds
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,GADBannerViewDelegate {
    
    var listNotes = [MyNotes]()
    
    @IBOutlet weak var myTableView: UITableView!
  
    @IBOutlet weak var myBanner: GADBannerView!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

       // myTableView?.rowHeight = 250
        myTableView.delegate = self
        myTableView.dataSource = self
       
         AdDidLoad()
         // performSegue(withIdentifier: "Show", sender:self)
        
    }
    override func viewDidAppear(_ animated: Bool) {

       self.listNotes.removeAll()
        loadNotes()
        myTableView.reloadData()
    }
    
   
    // MARK: - Delegate TableView
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listNotes.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! NotesCellTV

        cell.SetCell(note: listNotes[indexPath.row])
       
        return cell
    }
    // MARK: -  ميثود الضغط على السطر او الخليه
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let informaton = listNotes[indexPath.row]
        performSegue(withIdentifier: "GoToPage", sender:informaton)
    }
    
    // MARK: -  ميثود ارسال المعلومات للصفحه الثانيه
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let ShowView = segue.destination as? ViewContentVC {
            ShowView.Item = sender as! MyNotes;()
            
        }
    }
  
    //    // MARK: -
    func loadNotes() {

        let fetchRequest: NSFetchRequest<MyNotes> = MyNotes.fetchRequest()
      //ــ كود ترتيب البيانات اضافة المعلومات حسب التاريخ او اخر اضافة ــ//
        let dateAdd = NSSortDescriptor(key: "date", ascending: false)
        fetchRequest.sortDescriptors = [dateAdd]

        do{

            listNotes = try context.fetch(fetchRequest)
            myTableView.reloadData()
            
        }catch{
        }
       
    }
    

 

صور توضيحيه للمشكله

كلمات دليلية: swift

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (1)

عمر الشمري • منذ سنة

هلا هاشم. 

فيه بعض الاشياء في الكود تحتاج توضيح 

MyNotes(context. context) 

من وين جاء المتغير هذا context 

 

و برضو 

ad.saveContext()

من وين جاء المتغير  ad 

 

و هل تستخدم لايبرريز مساعدة في الكور داتا؟ 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !