2014-10-07 9 views
5

मेरे पास कस्टम TableViewCellroller के साथ एक कस्टम TableViewController है। मैंने विवरण को प्रदर्शित करने के लिए सेल से स्टोरीबोर्ड पर एक सेग्यू को एक अन्य व्यू कंट्रोलर बनाया लेकिन तैयार करने के लिए कभी भी नहीं कहा जाता है। मैंने didSelectRowAtIndexPath का उपयोग करने का प्रयास किया है लेकिन इसे या तो नहीं कहा जाता है। मुझे संदेह है कि ऐसा इसलिए हो सकता है क्योंकि मैं गतिशील रूप से कस्टम कक्ष बना देता हूं और उन्हें उन्हें दिए गए स्टोरीबोर्ड से सेगू नहीं मिलता है, लेकिन मुझे ऐसा करने का कोई तरीका नहीं मिला। मेरे BarButtonItem से "newSegue" सामान्य रूप से कहा जाता है।readyForSegue कस्टम uitableviewcell से नहीं बुलाया

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    println("PREPARE FOR SEGUE") 
    if segue.identifier == "newSegue" { 
     println("PREPARE FOR NEW SEGUE") 
    } else if segue.identifier == "detailSegue" { 
     println("PREPARE FOR DETAIL SEGUE") 
    } 
} 

override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
    println("You selected cell!") 
} 

मुझे लगता है मैं कुछ गलत कर रहा हो सकता है जब अपने कस्टम सेल को परिभाषित:

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

    let CellIndentifier: NSString = "ListPrototypeCell" 

    var cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier(CellIndentifier) as MyTableViewCell 

    var myClass: MyClass = self.myList.objectAtIndex(indexPath.row) as MyClass 

    cell.setCell(author: myClass.author, message: myClass.message) 

    return cell 

} 

किसी भी मदद की?

+0

आप नियंत्रक जहां इस कोड तालिका दृश्य के प्रतिनिधि के रूप में रहता है सेट किया है (यह स्वचालित रूप से सेट किया जाना चाहिए अगर अपनी कक्षा UITableViewController का एक उपवर्ग है)? क्या आपके पास उस सेल में विचार हैं जो स्पर्श को रोक सकता है? – rdelmar

+0

हां, मैंने इसे एक प्रतिनिधि के रूप में सेट किया है। सेल का कस्टम दृश्य है, लेकिन मैं दृश्य और न ही लेबल से एक सेगू बनाने में सक्षम नहीं हूं। – filipebarretto

+0

आपको सेल से कनेक्ट करना होगा, सामग्री दृश्य या लेबल नहीं। यदि आप कैनवास से सेल नहीं ले सकते हैं, तो बाईं ओर दृश्य सूची पर जाएं, और वहां सेल से खींचें। – rdelmar

उत्तर

3

सेल से नहीं, इंटरफेसबिल्डर में टेबल व्यू कंट्रोलर से सेग्यू खींचें। फिर आप didSelectRowAtIndexPath में performSegueWithIdentifier के माध्यम से अपने पहचानकर्ता के साथ segue निष्पादित कर सकते हैं।

फ़ंक्शन हस्ताक्षर भी देखें। परोक्ष unwrapped optionals के लिए विस्मयादिबोधक चिह्न अब जरूरत है:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let cell = tableView.cellForRowAtIndexPath(indexPath) 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 
    performSegueWithIdentifier("mySegue", sender: cell) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
} 
+1

यह एक काम है, ओपी की समस्या का समाधान नहीं। यह किसी भी तरह से काम नहीं करेगा, चूंकि ओपी ने कहा था कि सिलेक्टरोएट इंडेक्सपैथ नहीं कहा जा रहा है। – rdelmar

+0

मैंने इस अपील की भी कोशिश की है, लेकिन, जैसा कि मैंने सायर किया है, didSelectRowAtIndexPath नहीं कहा जा रहा है। सेल MyTableViewCell.swift पर परिभाषित किया गया है। मुझे नहीं पता कि यह समस्या पैदा कर सकता है या नहीं। – filipebarretto

+0

आपका 'didSelectRowAtIndexPath' हस्ताक्षर गलत है, इस प्रकार इसे नहीं कहा जाता है। उपरोक्त मेरा नमूना कोड देखें। आपको विस्मयादिबोधक चिह्नों को हटाना होगा। एक्सकोड के बीटा चरण के बीच कोड हस्ताक्षर बदल गया है और स्वचालित कोड पूर्णता अभी भी गलत है। – zisoft

संबंधित मुद्दे