2015-11-05 59 views
-2

我遇到了我的TableCell塞格問題。塞格不會在表格單擊

我已經在原型單元格上設置了標識符ShowAssesment的Segue以顯示導航控制器連接到表視圖,但是當我單擊一個單元格時,它只是突出顯示它並沒有任何反應。

class ViewController: UIViewController, UITableViewDataSource { 


@IBOutlet weak var tableView: UITableView! 
var subjects = [NSManagedObject]() 
override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.registerClass(UITableViewCell.self, 
     forCellReuseIdentifier: "Cell") 
} 

func tableView(tableView: UITableView, 
    numberOfRowsInSection section: Int) -> Int { 
     return subjects.count 
} 

func tableView(tableView: UITableView, 
    cellForRowAtIndexPath 
    indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = 
     tableView.dequeueReusableCellWithIdentifier("Cell") 

     let check = subjects[indexPath.row] 

     cell!.textLabel!.text = 
      check.valueForKey("name") as? String 

     return cell! 
} 
override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 

@IBAction func addName(sender: AnyObject) { 
    let alert = UIAlertController(title: "New Subject", message: "Add a new Subject", preferredStyle: .Alert) 
    let saveAction = UIAlertAction(title: "Save", 
     style: .Default, 
     handler: { (action:UIAlertAction) -> Void in 

      let textField = alert.textFields!.first 
      self.saveName(textField!.text!) 
      self.tableView.reloadData() 
    }) 


    let cancelAction = UIAlertAction(title: "Cancel", 
     style: .Default) { (action: UIAlertAction) -> Void in 
    } 

    alert.addTextFieldWithConfigurationHandler { 
     (textField: UITextField) -> Void in 
    } 
    alert.addAction(saveAction) 
    alert.addAction(cancelAction) 

    presentViewController(alert, 
     animated: true, 
     completion: nil) 
} 
func saveName(name: String) { 

    let appDelegate = 
    UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 


    let entity = NSEntityDescription.entityForName("Subjects", 
     inManagedObjectContext:managedContext) 

    let check = NSManagedObject(entity: entity!, 
     insertIntoManagedObjectContext: managedContext) 


    check.setValue(name, forKey: "name") 


    do { 
     try managedContext.save() 

     subjects.append(check) 
    } catch let error as NSError { 
     print("Could not save \(error), \(error.userInfo)") 
    } 
} 
override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 


    let appDelegate = 
    UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 


    let fetchRequest = NSFetchRequest(entityName: "Subjects") 


    do { 
     let results = 
     try managedContext.executeFetchRequest(fetchRequest) 
     subjects = results as! [NSManagedObject] 
    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 
    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle,forRowAtIndexPath indexPath: NSIndexPath) { 

    } 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "ShowAssesment") { 
     let indexPath = tableView.indexPathForCell((sender as? UITableViewCell)!) 
     let listVC = segue.destinationViewController as? AssesmentViewController 

     let subject = subjects[indexPath!.row] 

     listVC?.assesments = ["Death"] 
    } 

} 

} 
+0

「我已經在原型單元上設置了標識符爲ShowAssesment的Segue來顯示連接到表格視圖的導航控制器」No you have not。如果有的話,當你點擊細胞時會發生這種情況。 – matt

回答

0

我不知道你是否有設置您賽格瑞得當,它在細胞或使連接到一個按鈕,但如果你wan't是在電池接頭,你需要實現didselectrow和代碼執行SEGUE像

override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
     self.performSegueWithIdentifier("ShowAssesment", sender: self); 
    } 
0

檢查以確保設置正確。你也可以嘗試類似於

func tableView(tableView:UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){ 
     self.performSegueWithIdentifier("ShowAssesment", sender: tableView.cellForRowAtIndexPath(indexPath)) 
    }