2012-02-18 13 views
9

मैं मानक संक्रमण के साथ-साथ विस्तार प्रकटीकरण बटन दोनों के साथ एक UITableView के बीच संक्रमण को संभालने के लिए स्टोरीबोर्ड/सेग्यू का उपयोग करने का प्रयास कर रहा हूं। यहां पर कुछ अलग पोस्ट पढ़ने के बाद मुझे इस तरह से अपने प्रोजेक्ट की स्थापना की है:सहायक उपकरण से सेग्यू के लिए इंडेक्सपैथ

  1. टाई UITableViewCell और ViewController के बीच मुख्य segue
  2. टाई माध्यमिक segue माता पिता ViewController से नए ViewController को
  3. लागू accessoryButtonTappedForRowWithIndexPath इस प्रकार है :

    -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { 
        [self performSegueWithIdentifier:@"DetailSegue" sender:self]; 
    } 
    

यह महान काम करता है और मेरी prepareForSegue: sender: सी हो जाता है अपेक्षित के रूप में सहयोगी। समस्या यह है कि, मुझे चयनित तत्व के लिए indexPath को जानने की आवश्यकता है। UITableViewCell से segue इस तरह indexPath को पुन: प्राप्त:

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

दुर्भाग्य से जब मुझे लगता है कि accessoryButton बुलाया होने करने की कोशिश, null देता है।

मूल प्रश्न मैं के बंद इस कोड के कुछ आधारित कर रहा हूँ यहाँ है: Detail Disclosure Button and Segues

वहाँ tableView जो accessoryButtons के लिए indexPath रिटर्न की एक विधि है? क्या मुझे इंडेक्सपैथ को किसी अन्य तरीके से एक्सेस करने की ज़रूरत है?

उत्तर

16

में आप accessoryButtonTappedForRowWithIndexPath ओवरराइड करने के लिए नहीं है।

prepareForSegue में, जब, एक विस्तार प्रकटीकरण बटन के साथ काम करने के बजाय:

[self.tableView indexPathForSelectedRow] 

उपयोग:

[self.tableView indexPathForCell:sender] 

इस पहले से ही विस्तार प्रकटीकरण बटन के सेल है।

+2

पर पास करने के लिए स्थानीय चर की आवश्यकता हो सकती है धन्यवाद एडम, यह स्वीकार्य उत्तर होना चाहिए! – Pat

+0

जब मैंने ऐसा किया, प्रेषक टेबलव्यू कंट्रोलर था। तो प्रदर्शन में, मैंने सेल को प्रेषक –

+0

के रूप में पारित किया है हम इसे स्विफ्ट 3 में कैसे करते हैं? – nyxee

13

sender तर्क दस्तावेज़ के अनुसार, यह है:

उद्देश्य यह है कि आप segue आरंभ करने के लिए उपयोग करना चाहते हैं। यह वस्तु वास्तविक segue के दौरान सूचनात्मक उद्देश्यों के लिए उपलब्ध कराई गई है।

मैं किसी भी कारण नहीं दिख रहा है तुम क्यों self के बजाय प्रेषक के रूप में सूचकांक पथ का उपयोग नहीं कर सकते, तो prepareForSegue: में सूचकांक पथ में पहुंच।

यदि वह काम नहीं करता है, एक इवर में सूचकांक पथ की दुकान और का उपयोग कि prepareForSegue

+0

प्रेषक पास करना प्रेषक के रूप में ठीक काम करता है। जब कोई इसका उल्लेख करता है तो काफी स्पष्ट लगता है। धन्यवाद। – valdarin

+0

ग्रेट विचार, मुझे यह सोचने में परेशान था कि हमें इस जानकारी को – trapper

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