2016-07-30 4 views
0

Dies ist meine Klasse, in der Methoden für UITableViewDatasource überschrieben werden, um Daten als 'Email' in Tableview in einer einzelnen Zelle mit UITableViewCell wie im Code zu haben . aber diese Methoden werden nicht ausgeführt. Will mir bitte jemand helfen, dieses Issu zu reparieren?UITableViewDataSource-Methode kann nicht aufgerufen werden, auch Cursor wird nicht innerhalb dieser Methoden beim Debuggen

Import UIKit

var operationViewFlag: Int!

Klasse HomeCellView: UITableViewCell {

@IBOutlet weak var btn_tablecell_Delete: UIButton! 
@IBOutlet weak var btn_tablecell_Edit: UIButton! 
@IBOutlet weak var lbl_tablecell_Email: UILabel! 

}

Klasse Viewcontroller: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var TableView_Mainscreen: UITableView! 
@IBOutlet weak var lbl_MainScreen_Title: UILabel! 
@IBOutlet weak var btn_Mainscreen_Insert: UIButton! 


var databasepath:String! 
var arrayStudInfo:NSMutableArray! 


// viewDidLoad 
override func viewDidLoad() 
{ 

    operationViewFlag=1 

    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    lbl_MainScreen_Title.font = UIFont(name: "HelveticaNeue-Bold", size: 20) 
    btn_Mainscreen_Insert.layer.cornerRadius = 15 
    btn_Mainscreen_Insert.layer.borderWidth = 1 
    btn_Mainscreen_Insert.layer.borderColor = UIColor.brownColor().CGColor 


    // Variable Intialization 
    arrayStudInfo = NSMutableArray() 


    // Process for Creating Opening Database 
    let filemgr = NSFileManager.defaultManager() 
    let dirpath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 
    let docdir = dirpath[0] as String 
    databasepath = docdir.stringByAppendingString("StudentDataManipulation.sqlite"); 

    if filemgr.fileExistsAtPath(databasepath as String) 
    { 
     let contactDB = FMDatabase(path: databasepath as String) 
     if contactDB == nil 
     { 
      print("Error: \(contactDB.lastErrorMessage())") 
     } 
     if contactDB.open() 
     { 
      let sql_stmt = "CREATE TABLE IF NOT EXISTS StudentData (Name TEXT, Phone TEXT, Email TEXT PRIMARY KEY NOT NULL, Comment TEXT)" 

      if !contactDB.executeStatements(sql_stmt) 
      { 
       print("Error: \(contactDB.lastErrorMessage())") 
      } 
      contactDB.close() 
     } 
     else 
     { 
      print("Error: \(contactDB.lastErrorMessage())") 
     } 
    } 
} 

//viewWillAppear 
override func viewWillAppear(animated: Bool) 
{ 
    super.viewWillAppear(true) 
    listAllData() 
} 

//didReceiveMemoryWarning 
override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// Edit Method 
@IBAction func btn_Edit_Clicked(sender: UIButton) 
{ 
    operationViewFlag=2 

    let updateView = self.storyboard?.instantiateViewControllerWithIdentifier("PerformOperation") as! PerformOperation 
    updateView.strEmail = arrayStudInfo[sender.tag]["Email"] as? String 
    print("Email to pass = \(updateView.strEmail)") 
    updateView.dictRecord = (arrayStudInfo[sender.tag] as! NSDictionary) 
    self.navigationController?.pushViewController(updateView, animated: true) 
} 


// Delete Method 
@IBAction func btn_Delete_Clicked(sender: UIButton) 
{ 

    let contactDB = FMDatabase(path: databasepath as String) 
    let strDelete = arrayStudInfo[sender.tag]["Email"] as? String 
    if contactDB.open() 
    { 
     let deleteSQL = "DELETE FROM StudentData WHERE Email='\(strDelete!)'" 

     let result = contactDB.executeUpdate(deleteSQL, withArgumentsInArray: nil) 
     if !result 
     { 
      print("Error: \(contactDB.lastErrorMessage())") 
     } 
     else 
     { 
      print("Deleted Record.") 
      listAllData() 
     } 
    } 
    else 
    { 
     print("Error: \(contactDB.lastErrorMessage())") 
    } 
    contactDB.close() 
} 



// List All Data 
func listAllData() 
{ 
    arrayStudInfo.removeAllObjects(); 
    let contactDB = FMDatabase(path: databasepath as String) 
    if contactDB.open() 
    { 
     let filemgr = NSFileManager.defaultManager() 
     let dirpath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 
     let docdir = dirpath[0] as String 
     databasepath = docdir.stringByAppendingString("StudentDataManipulation.sqlite"); 

     if filemgr.fileExistsAtPath(databasepath as String) 
     { 
      let contactDB = FMDatabase(path: databasepath as String) 
      if contactDB == nil 
      { 
       print("Error: \(contactDB.lastErrorMessage())") 
      } 
      if contactDB.open() 
      { 
       let sql_stmt = "CREATE TABLE IF NOT EXISTS StudentData (Name TEXT, Phone TEXT, Email TEXT PRIMARY KEY NOT NULL, Comment TEXT)" 
       if !contactDB.executeStatements(sql_stmt) 
       { 
        print("Error: \(contactDB.lastErrorMessage())") 
       } 
       let SelectQuery = "SELECT * FROM StudentData" 
       if let results:FMResultSet? = contactDB.executeQuery(SelectQuery, withArgumentsInArray: nil) 
       { 
        while results?.next() == true 
        { 
         let dictRecord = results?.resultDictionary() 
         arrayStudInfo.insertObject(dictRecord!, atIndex: arrayStudInfo.count) 
         print("\nRESULT : \(results?.resultDictionary())") 
        } 
        TableView_Mainscreen.reloadData() 
       } 
       else 
       { 
        print("Recored not found"); 
       } 
       contactDB.close() 
      } 
      else 
      { 
       print("Error: \(contactDB.lastErrorMessage())") 
      } 
     } 
     contactDB.close() 
    } 
    else 
    { 
     print("Error: \(contactDB.lastErrorMessage())") 
    } 
} 


// TableView Methods 
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{ 
    return arrayStudInfo.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    let Cell = tableView.dequeueReusableCellWithIdentifier("CellHome") as! HomeCellView 
    Cell.lbl_tablecell_Email.text! = arrayStudInfo[(indexPath.row)]["Email"] as! String 

    print("Your Email : \(Cell.lbl_tablecell_Email.text!)") 

    Cell.btn_tablecell_Edit.tag=indexPath.row 
    Cell.btn_tablecell_Delete.tag=indexPath.row 
    Cell.btn_tablecell_Edit.layer.cornerRadius = 10 
    Cell.btn_tablecell_Delete.layer.cornerRadius = 10 


    // btn_Delete_Clicked 
    Cell.btn_tablecell_Edit.addTarget(self, action: #selector(ViewController.btn_Edit_Clicked(_:)), forControlEvents: UIControlEvents.TouchUpInside) 

    Cell.btn_tablecell_Delete.addTarget(self, action: #selector(ViewController.btn_Delete_Clicked(_:)), forControlEvents: UIControlEvents.TouchUpInside) 

    return Cell 
} 

}

+0

Keine Zeileneinstellung 'dataSource' von' TableView_Mainscreen' gefunden. – OOPer

+0

Vielen Dank, es geht gut ....! –

Antwort

1

Haben Sie setzen deleg ate und Datenquelle an ViewController.

Wenn Sie ein Storyboard verwenden, können Sie steuern, indem Sie auf ViewController auf Ihr TableView klicken und sowohl den Delegaten als auch die Datenquelle festlegen.

Wenn Sie es in Code tun mögen, können Sie tun, um diesen

TableView_Mainscreen.delegate = self 
TableView_Mainscreen.datasource = self 

Auch sollten Sie niedrigeres Kamel Fall verwenden, um Ihre Variable zu nennen.

+0

Vielen Dank, es geht gut ....! –

Verwandte Themen