2014-09-01 9 views
6

में सेल देखें मैंने स्विफ्ट में सूची के लिए एक कस्टम सेल बनाया है। इसमें दो बटन हैं - एक 'रोकें' बटन और एक 'स्टॉप' बटन। विचार यह है कि प्रत्येक पंक्ति वस्तु एक डाउनलोड का प्रतिनिधित्व करती है ताकि उपयोगकर्ता प्रत्येक को रुक सके और शुरू कर सके।एक कस्टम सूची में दबाए गए बटन को पहचानना स्विफ्ट

हालांकि, मुझे प्रत्येक बटन के लिए @IBAction बनाने की आवश्यकता है। मैंने इन्हें मुख्य व्यू कंट्रोलर में बनाया है और निश्चित रूप से पर्याप्त है, जब वे झुकाए जाते हैं, तो वे उचित ट्रिगर करते हैं।

जिस बिट पर मैं फंस गया हूं वह पहचानकर्ता की पहचान कर रहा है कि किस पंक्ति के बटन दबाए गए हैं। मैं सेलफोर एट इंडेक्सपैथ से संबंधित कुछ मान रहा हूं।

मैं निम्नलिखित कोड (जो मैं एक ऐसी ही सवाल पाठ सम्बंधित क्षेत्र से पाया जाता है) मिल गया है:

@IBAction func startOrPauseDownloadSingleFile(sender: UIButton!) { 
    let pointInTable: CGPoint = sender.convertPoint(sender.bounds.origin, toView: self.tableView) 
    let cellIndexPath = self.tableView.indexPathForRowAtPoint(pointInTable) 
} 

हालांकि मैं त्रुटि (प्रकार का एक तर्क सूची के साथ 'convertPoint' आह्वान नहीं किया जा सकता 'मिलती रहती है @lvalue CGPoint, toView: $ T6) '।

क्या कोई मदद कर सकता है?

धन्यवाद,

उत्तर

4

मैंने अपना कोड लिया और इसे एक साधारण परियोजना में एम्बेड किया।

इंटरफ़ेस बिल्डर में, मैंने UITableViewController दृश्य बनाया और अपनी कक्षा को "व्यू कंट्रोलर" पर सेट किया। मैंने इसे UITableViewCell में जोड़ा, इसके पहचानकर्ता को "सेल" पर सेट किया, अपनी शैली को "कस्टम" और इसकी कक्षा "कस्टमसेल" पर सेट करें। इसके बाद मैंने सेल की सामग्री में एक UIButton जोड़ा और इसे अस्पष्ट ऑटो लेआउट बाधा सेट करें।

परियोजना नेविगेटर में, मैं "ViewController" नामक एक नया फ़ाइल बनाई और उस में निम्न कोड कहा:

import UIKit 

class CustomCell: UITableViewCell { 

    @IBOutlet weak var button: UIButton! 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override init(style: UITableViewCellStyle, reuseIdentifier: String!) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 
    } 

    override func awakeFromNib() { 
     super.awakeFromNib() 
    } 

    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 
    } 

} 

class ViewController: UITableViewController { 

    func buttonPressed(sender: AnyObject) { 
     let pointInTable: CGPoint = sender.convertPoint(sender.bounds.origin, toView: self.tableView) 
     let cellIndexPath = self.tableView.indexPathForRowAtPoint(pointInTable) 
     println(cellIndexPath) 
    } 

    override func awakeFromNib() { 
     super.awakeFromNib() 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 10 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomCell 
     cell.selectionStyle = .None 

     cell.button.addTarget(self, action: "buttonPressed:", forControlEvents: UIControlEvents.TouchUpInside) 

     return cell 
    } 

} 

मैं अंत में बटन के IBOutlet इंटरफ़ेस बिल्डर में UIButton से जुड़ा हुआ, परियोजना भाग गया और प्रत्येक बटन स्पर्श से संबंधित सेल के इंडेक्सपाथ लॉग करने में सक्षम था।

+1

मैंने आपकी योजना का पालन किया और सबकुछ ठीक था। लेकिन मैंने एक सेल के अंदर और यूआई आइटम जोड़ने की कोशिश की और फिर यह काम किया लेकिन जब मैं स्क्रॉल करता हूं और एक सेल दृश्य से निकलता है और जब यह वापस आता है तो यह बाधाओं को याद नहीं रखता है और मेरे पास 0,0 निर्देशांक पर सभी बटन हैं सेल का इसे कैसे ठीक करें? – Nicholas

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