2013-02-11 10 views
16
if([segue.identifier isEqualToString:@"Edit"]){ 

    AddCoffeeViewController *avc = [segue destinationViewController]; 

    Coffee *coffeeObj = [appDelegate.coffeeArray objectAtIndex:arow]; 
    NSLog(@"ViewController.m prepareForSegue: arow: %d coffeeName:%@ price:%@  coffeeID:%d",arow,coffeeObj.coffeeName,coffeeObj.price,coffeeObj.coffeeID); 
    [coffeeObj setIsInEditMode:YES]; 
    avc.EditCoffeeObj = coffeeObj; 


} 

जब मैं एक्सेसरी बटन दबा रहा हूं तो मुझे सही पंक्ति नहीं मिल रही है।

हालांकि नीचे की विधि में मुझे सही पंक्ति मिल रही है। क्या कोई तरीका है कि अगर मैं किसी भी ivar का उपयोग नहीं करना चाहता हूं तो मैं सीगू के लिए सही पंक्ति तैयार कर सकता हूं।इंडेक्सपाथ पंक्ति विस्तार से प्रकटीकरण के लिए सीगू के लिए तैयार नहीं हो रही है

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{ 

arow = indexPath.row; 

} 

enter image description here


tableViewCell गौण बटन: मोडल segue प्रदर्शन (संपादित करें)
+ बटन (नेविगेशन बार बटन मद): मोडल segue प्रदर्शन (जोड़े)

+0

क्यों बस सीधे segue accessoryButtonTappedForRowWithIndexPath अंदर के लिए तैयार नहीं डाल सकते के माध्यम से indexPath प्राप्त? –

+0

मैं कॉफी क्लास ऑब्जेक्ट पास करना चाहता हूं। यदि उपयोग करें [स्वयं प्रदर्शन SegueWithIdentifier: @ "संपादित करें" प्रेषक: शून्य]; तो क्या कोई है कि मैं कॉफी क्लास ऑब्जेक्ट भी पास कर सकता हूं। –

+0

नोट: एक्सेसरी बटन से सेगिंग कॉल करना पहली बार आईओएस 6 में पेश किया गया था। कस्टम सेल बनाने और इसमें एक बटन जोड़ने और उस बटन से सेगू को कॉल करने के लिए एक अच्छा कामकाज है। – Groot

उत्तर

34

यदि आपने अपने स्टोरीबोर्ड में सहायक कार्रवाई को जोड़ दिया है तो senderprepareForSegue:sender: में वह कक्ष होगा जो टैप किया गया था। तुम सिर्फ

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; 
+0

अरे आपका समाधान सही था। बहुत धन्यवाद। मुझे समझ में नहीं आता कि कुछ लोग मेरे प्रश्न पर नकारात्मक पोस्ट क्यों दे रहे हैं। बस इसे आज़माएं, आपको एक ही समस्या का सामना करना पड़ेगा। –

+0

आप दोस्त प्यार करते हैं। बहुत बहुत धन्यवाद –

+0

बहुत दोस्त धन्यवाद। – shaikh

3

गौण बटन उपयोग किया और चयनित पंक्ति दो अलग-अलग चीजें हैं। AccessoryButtonTappedForRowWithIndexPath में, केवल इंडेक्सपैथ को वैश्विक चर पर सेट करें और फिर उसमें सेग्यू में उपयोग करें।

0

स्विफ्ट 3.0 समाधान की तरह कुछ कर सकते हैं इसका मतलब यह है; उद्देश्य-सी संस्करण के समान ही। तो सेल इस है और हम सेल जिसमें गौण दबाया

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let destination = segue.destination as? YourViewController { 
     let indexPath = tableView.indexPath(for: sender as! UITableViewCell)! 
    } 
} 
संबंधित मुद्दे