2016-07-30 4 views
0

이 코드는 UITableViewCell을 사용하여 단일 셀에서 Tableview의 데이터를 'Email'로 사용하도록 UITableViewDatasource의 메서드를 재정의하는 내 클래스입니다. . 그러나 이러한 방법은 실행되지 않습니다. 아무도 내가 이걸 해결할 수있게 도와 줄거야?UITableViewDataSource 메서드를 호출 할 수 없습니다. 심지어 짝수 커서가 디버깅 할 때 해당 메서드 안에 들어 가지 않습니다.

수입 UIKit

var에 operationViewFlag : 지능!

클래스 HomeCellView :있는 UITableViewCell {

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

}

클래스의 ViewController : 당신은 deleg 설정의 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

'TableView_Mainscreen'의'dataSource' 행을 찾을 수 없습니다. – OOPer

+0

대단히 감사합니다. –

답변

1

가나요 ViewController에 데이터 원본을 보냈습니다.

스토리 보드를 사용하는 경우 tableView를 ViewController로 클릭하고 대리인과 데이터 소스를 모두 설정할 수 있습니다.

당신이 코드를 수행하려는 경우, 당신은 또한 당신이 당신의 변수 이름을 낮은 카멜 케이스를 사용한다이

TableView_Mainscreen.delegate = self 
TableView_Mainscreen.datasource = self 

을 할 수 있습니다.

+0

고맙습니다 아주 많이 가고 있습니다 ....! –