2013-03-25 7 views
7

मैं UICollectionView का उपयोग करके अपना पहला एप्लिकेशन बना रहा हूं और ध्यान दिया कि ऑब्जेक्ट हटाने के मामले में मैं इतना कुछ नहीं कर सकता। UITableView ऐप के लिए, वहाँ विधि हटाने के लिए स्वाइप है:UICollectionView कोशिकाओं को हटाने के लिए कैसे देखें (commit एडिटिंग स्टाइल के बराबर)?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 
     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    } 

} 

जब मैं GMGridView उपयोग करें, यह iPhone होम स्क्रीन पर लंबे प्रेस के समान व्यवहार है - हिला दृश्य सितारों और एक हटाएँ बटन प्रदर्शित किया जा सकता है, जो दृश्य को हटाने के लिए जिम्मेदार है। मैं निश्चित रूप से इस व्यवहार को दोहराने का प्रयास कर सकता हूं, लेकिन मुझे यकीन नहीं है कि उपयोगकर्ता "इसे प्राप्त करेंगे"।

मैं में रुचि रखते उपयोगकर्ता UICollectionView से वस्तुओं को हटाने के बताने के लिए मेरे पास क्या विकल्प हैं हूँ - मैं अपने ही हटाना इशारों/नियंत्रण लागू करने के लिए है, या वहाँ कुछ है कि मैं याद कर रहा हूँ (या खुला स्रोत) है ?

+3

जितना अधिक मैं UICollectionView के साथ काम करता हूं, उतना ही मुझे एहसास होता है कि UITableView कितना परिपक्व है ... – jrturton

उत्तर

7

मुझे लगता है कि CollectionView शामिल मेरे विचार नियंत्रक में इस कोड डाला जाता है और इसे इस तरह से किया था। आप संभवतः चयनित सेल का पता लगाने के लिए टैप इशारा के साथ ऐसा कुछ कर रहे हैं। , https://github.com/Raizlabs/RZUtils/tree/master/RZUtils/Components/RZCollectionTableView

यह एक UITableView एक UICollectionView का उपयोग कर की नकल करता है ताकि आप के साथ संग्रह को देखने के लचीलापन प्राप्त कर सकते हैं:

- (IBAction)didLongPressCellToDelete:(UILongPressGestureRecognizer*)gesture { 
CGPoint tapLocation = [gesture locationInView:self.myCollectionView]; 
NSIndexPath *indexPath = [self.myCollectionView indexPathForItemAtPoint:tapLocation]; 
if (indexPath && gesture.state == UIGestureRecognizerStateBegan) { 
    NSLog(@"image with index %d to be deleted", indexPath.item); 
    self.itemToBeDeleted = indexPath.item; 
    UIAlertView *deleteAlert = [[UIAlertView alloc] 
          initWithTitle:@"Delete?" 
          message:@"Are you sure you want to delete this image?" 
          delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Yes", nil]; 
    [deleteAlert show]; 

} 
} 


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
NSLog(@"selected button index = %d", buttonIndex); 
if (buttonIndex == 1) { 
    // Do what you need to do to delete the cell 
    [self.myCollectionView reloadData]; 
} 
} 
+0

यह 'self.itemToBeDeleted' क्या है? – iPeter

+0

self.itemToBeDeleted उस आइटम की अनुक्रमणिका पर सेट है जिसे उपयोगकर्ता हटाना चाहता है। – RawMean

+0

समझ गया! :) @RawMean – iPeter

6

डिफ़ॉल्ट UICollectionViewCell केवल एक रिक्त (, कोई imageView कोई शीर्षक नहीं हटाएँ बटन,) दृश्य

उपवर्ग UICollectionViewCell और उस पर बटन हटाना जोड़ने है।

//Cell.h 
@class MyCell; 
@protocol MyCellDelegate 
-(void)deleteButtonClick:(MyCell *)cell; 
@end 
@interface MyCell : UICollectionViewCell 
@property (weak , nonatomic) id<MyCellDelegate> delegate; 
@property (weak,nonatomic) IBOutlet *delButton; 
@end 

//Cell.m 
-(void)awakeFromNib{ 
    [self.delButton setHidden:YES] 
    //add Swipe right to here 
} 
-(void)handleSwipeRight:(UISwipeGestureRecognizer *)swipe { 
    [self.delButton setHidden:NO]; 
} 
-(IBAction)clickDelBut{ 
[self.delegate deleteButtonClick:self]; 
} 

//ViewController.m 
//In cellForItemsAtIndexPath cell.delegate = self. 

-(void)deleteButtonClick:(MyCell *)cell{ 
    //get indexPath, delete data and reload collectionView here 
} 
: setHidden = नहीं जब आप इसे प्रदर्शित करना चाहते हैं डेटा को हटाने और collectionView फिर से लोड करने

नमूना उपयोग कड़ी चोट स्टोरीबोर्ड में स्क्रॉल खड़ी UICollectionViewCell को हटाने का अधिकार (। पूर्व नीचे स्वाइप करें)

उपयोग कस्टम प्रतिनिधि

+0

मेरी चिंता यह है कि मेरा संग्रह दृश्य लंबवत स्क्रॉल करता है, इसलिए स्वाइप डाउन काम नहीं करेगा। शायद यही कारण है कि हटाने के लिए कोई स्वाइप नहीं है - क्योंकि उपयोगकर्ता को कुछ दिशा में स्वाइप करने या लंबी प्रेस करने के लिए शिक्षित करना बहुत परेशानी है। –

0

जो मैंने पाया है और UICollectionView में चीजों को हटाने और संपादित करने के लिए कार्यान्वित कर रहा हूं, इस ब्लॉग पोस्ट से हैं।

मूल रूप से प्रतिलिपि/पेस्ट ect के लिए मेनू दिखा रहा है, और हटाने के लिए अपने स्वयं के कार्यों को जोड़ रहा है। यह iSang के उत्तर के समान है, जेस्चर पहचानकर्ताओं को जोड़ने के बिना जो UICollectionViews में बहुत अच्छी तरह से काम नहीं करते हैं।

यह लंबे प्रेस इशारा का उपयोग करता है कि लोग पहले ही आईओएस के अन्य हिस्सों में टेक्स्ट और लिंक कॉपी और पेस्ट करने के लिए संपादन मेनू लाने के लिए उपयोग कर चुके हैं।

http://paulsolt.com/2012/11/uicollectionview-custom-actions-and-uimenucontroller/

0

भविष्य में यह पढ़ किसी के लिए, यहाँ एक उपयोगी पुस्तकालय मैं उपयोग करते आ रहे UITableView के साथ आने वाली सभी अच्छी संपादन कार्यक्षमता।

यदि आप एक अलग तरह के डिलीट व्यवहार या विभिन्न लेआउट को लागू करने की कोशिश कर रहे हैं, हालांकि, जहां तक ​​मुझे पता है कि आपको इसे स्क्रैच से लागू करना है। यदि आप UIGestureRecognizers के साथ कस्टम चीजें करने के लिए नए हैं, तो मैं इस ट्यूटोरियल की सिफारिश करता हूं: http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more

आशा है कि मदद करता है!

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