दिलचस्प पोस्ट
क्यों मेरा सीएसएस बंडलिंग एक बिन तैनात MVC4 ऐप के साथ काम नहीं कर रहा है? jQuery क्लोन () इवेंट बाइंडिंग क्लोनिंग नहीं, यहां तक ​​कि () आर सीएमडी जांच में वैश्विक चर नोट के लिए कोई दृश्य बाध्यकारी नहीं है स्पाइडर एक वेबसाइट और रिटर्न URL केवल टैब के बजाय रिक्त स्थान का उपयोग करने के लिए मैं ईक्लिप्स कैसे बदलूं? JSF2 / प्राइमफ़ेस में नामकरण कंटेनर एक आंशिक, रेल 3 में एक चर पास? मैं कैसे बता सकता हूं कि क्या NumPy एक दृश्य या प्रति बनाता है? एंड्रॉइड में एमएमएस डाटा कैसे पढ़ें? मैथमैटिका शॉर्टकट को कस्टमाइज करना सरणी 1 को सरणी 2 में बदलने के लिए न्यूनतम स्वैप की आवश्यकता है? "प्रकार त्रुटि: यूनिकोड-ऑब्जेक्ट्स हैशिंग से पहले एन्कोडेड होना चाहिए" मैं यूआईएलबल में टेक्स्ट के उपस्ट्रिंग के लिए CGRect कैसे खोजूं? पायथन में एक फ़ोल्डर में सभी मॉड्यूल लोड किए जा रहे हैं गिनती और द्विआधारी सेमाफोर के बीच अंतर

स्वाइप बाएं जबकि UITableViewCell में कस्टम संपादन दृश्य। उद्देश्य-सी या स्विफ्ट

IOS7 UITableView में कस्टम संपादन दृश्य बनाने के लिए उद्देश्य सी के साथ Evernote या Apple Reminders ऐप की तरह, जबकि स्वाइप बाएं छोड़ी गई। मैंने एक कस्टम संपादन सहायक उपकरण सेट करने का प्रयास किया है, लेकिन यह काम नहीं करता है

Evernote संपादन दृश्य:

यहां छवि विवरण दर्ज करें अनुस्मारक दृश्य संपादित करें:

यहां छवि विवरण दर्ज करें

मेरा वर्तमान कोड है

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { NSLog(@"delete"); } } 

मैंने इस समस्या को हल करने की कोशिश की है: (UITableViewController.h)

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //make cell UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; [view setBackgroundColor:[UIColor greenColor]]; //add Buttons to view cell.editingAccessoryView = view; return cell; } 

और इसके साथ: (UITableViewCell)

 - (void)willTransitionToState:(UITableViewCellStateMask)state; - (void)setEditing:(BOOL)editing animated:(BOOL)animated; - (UIView*)editingAccessoryView; 

Solutions Collecting From Web of "स्वाइप बाएं जबकि UITableViewCell में कस्टम संपादन दृश्य। उद्देश्य-सी या स्विफ्ट"

बस नीचे दिए गए कोड पेस्ट करें!

 -(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewRowAction *editAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"Clona" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ //insert your editAction here }]; editAction.backgroundColor = [UIColor blueColor]; UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ //insert your deleteAction here }]; deleteAction.backgroundColor = [UIColor redColor]; return @[deleteAction,editAction]; } 

स्विफ्ट 3

 func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let editAction = UITableViewRowAction(style: .normal, title: "Edit") { (rowAction, indexPath) in //TODO: edit the row at indexPath here } editAction.backgroundColor = .blue let deleteAction = UITableViewRowAction(style: .normal, title: "Delete") { (rowAction, indexPath) in //TODO: Delete the row at indexPath here } deleteAction.backgroundColor = .red return [editAction,deleteAction] } 

स्विफ्ट 2.1

 func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { let editAction = UITableViewRowAction(style: .Normal, title: "Edit") { (rowAction:UITableViewRowAction, indexPath:NSIndexPath) -> Void in //TODO: edit the row at indexPath here } editAction.backgroundColor = UIColor.blueColor() let deleteAction = UITableViewRowAction(style: .Normal, title: "Delete") { (rowAction:UITableViewRowAction, indexPath:NSIndexPath) -> Void in //TODO: Delete the row at indexPath here } deleteAction.backgroundColor = UIColor.redColor() return [editAction,deleteAction] } 

नोट: आईओएस 8 के बाद के लिए

इस लिंक को देखें: https://github.com/TehehanLax/UITableViewCell-Swipe-for-Options

और एकाधिक यूट्यूब बटन के साथ अपने यूटिविवॉयल को अनुकूलित करें।

  UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))]; scrollView.contentSize = CGSizeMake(CGRectGetWidth(self.bounds) + kCatchWidth, CGRectGetHeight(self.bounds)); scrollView.delegate = self; scrollView.showsHorizontalScrollIndicator = NO; [self.contentView addSubview:scrollView]; self.scrollView = scrollView; UIView *scrollViewButtonView = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.bounds) - kCatchWidth, 0, kCatchWidth, CGRectGetHeight(self.bounds))]; self.scrollViewButtonView = scrollViewButtonView; [self.scrollView addSubview:scrollViewButtonView]; // Set up our two buttons UIButton *moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; moreButton.backgroundColor = [UIColor colorWithRed:0.78f green:0.78f blue:0.8f alpha:1.0f]; moreButton.frame = CGRectMake(0, 0, kCatchWidth / 3.0f, CGRectGetHeight(self.bounds)); [moreButton setTitle:@"More" forState:UIControlStateNormal]; [moreButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [moreButton addTarget:self action:@selector(userPressedMoreButton:) forControlEvents:UIControlEventTouchUpInside]; [self.scrollViewButtonView addSubview:moreButton]; UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom]; shareButton.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:1.0f alpha:1.0f]; shareButton.frame = CGRectMake(kCatchWidth / 3.0f, 0, kCatchWidth / 3.0f, CGRectGetHeight(self.bounds)); [shareButton setTitle:@"Share" forState:UIControlStateNormal]; [shareButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [shareButton addTarget:self action:@selector(userPressedMoreButton:) forControlEvents:UIControlEventTouchUpInside]; [self.scrollViewButtonView addSubview:shareButton]; UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; deleteButton.backgroundColor = [UIColor colorWithRed:1.0f green:0.231f blue:0.188f alpha:1.0f]; deleteButton.frame = CGRectMake(kCatchWidth / 3.0f+kCatchWidth / 3.0f, 0, kCatchWidth / 3.0f, CGRectGetHeight(self.bounds)); [deleteButton setTitle:@"Delete" forState:UIControlStateNormal]; [deleteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [deleteButton addTarget:self action:@selector(userPressedDeleteButton:) forControlEvents:UIControlEventTouchUpInside]; [self.scrollViewButtonView addSubview:deleteButton]; UIView *scrollViewContentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))]; scrollViewContentView.backgroundColor = [UIColor whiteColor]; [self.scrollView addSubview:scrollViewContentView]; self.scrollViewContentView = scrollViewContentView; UILabel *scrollViewLabel = [[UILabel alloc] initWithFrame:CGRectInset(self.scrollViewContentView.bounds, 10, 0)]; self.scrollViewLabel = scrollViewLabel; [self.scrollViewContentView addSubview:scrollViewLabel]; 
  • मैंने इस कोड को लागू किया है जिसके साथ मेरे ऐप को ऐसा परिणाम मिला। आप स्वाइप सेल में बटन की संख्या जोड़ सकते हैं।

    यहां स्क्रीन शॉट लागू किया गया है

    यहां छवि विवरण दर्ज करें ज़ोर से मारना के बाद सेल 3 बटन "अधिक", "शेयर", "हटाएं" दिखाई देता है।

कस्टम छवि सेट करने या देखने के लिए आप UITableViewRowAction के backgroundColor का उपयोग कर सकते हैं। चाल UIColor(patternImage:) प्रयोग कर रहा है।

मूल रूप से UITableViewRowAction क्षेत्र की चौड़ाई का शीर्षक उसके द्वारा तय किया जाता है, ताकि आप शीर्षक (या patternImage ) की एक सटीक लंबाई पा सकते हैं और patternImage इमेज के साथ छवि का सटीक आकार सेट कर सकते हैं।

इसे कार्यान्वित करने के लिए, मैंने एक UIView एक्सटेंशन विधि बनाया है

 func image() -> UIImage { UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0) guard let context = UIGraphicsGetCurrentContext() else { return UIImage() } layer.render(in: context) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image! } 

और सफेद स्थान और सटीक लंबाई के साथ एक स्ट्रिंग बनाने के लिए,

 fileprivate func whitespaceString(font: UIFont = UIFont.systemFont(ofSize: 15), width: CGFloat) -> String { let kPadding: CGFloat = 20 let mutable = NSMutableString(string: "") let attribute = [NSFontAttributeName: font] while mutable.size(attributes: attribute).width < width - (2 * kPadding) { mutable.append(" ") } return mutable as String } 

और अब, आप UITableViewRowAction बना सकते हैं

 func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let whitespace = whitespaceString(width: kCellActionWidth) let deleteAction = UITableViewRowAction(style: .`default`, title: whitespace) { (action, indexPath) in // do whatever you want } // create a color from patter image and set the color as a background color of action let kActionImageSize: CGFloat = 34 let view = UIView(frame: CGRect(x: 0, y: 0, width: kCellActionWidth, height: kCellHeight)) view.backgroundColor = UIColor.white let imageView = UIImageView(frame: CGRect(x: (kCellActionWidth - kActionImageSize) / 2, y: (kCellHeight - kActionImageSize) / 2, width: 34, height: 34)) imageView.image = UIImage(named: "x") view.addSubview(imageView) let image = view.image() deleteAction.backgroundColor = UIColor(patternImage: image) return [deleteAction] } 

परिणाम इस तरह दिखेगा

यहां छवि विवरण दर्ज करें

ऐसा करने का एक अन्य तरीका कस्टम फ़ॉन्ट आयात करना है, जिसमें वह चित्र है जिसे आप फ़ॉन्ट के रूप में उपयोग करना चाहते हैं और UIButton.appearance उपयोग करें। हालांकि यह अन्य बटनों को प्रभावित करेगा जब तक आप मैन्युअल रूप से अन्य बटन के फ़ॉन्ट को सेट नहीं करते हैं।

आईओएस 11 से, यह यह संदेश दिखाएगा [TableView] Setting a pattern color as backgroundColor of UITableViewRowAction is no longer supported. वर्तमान में यह अभी भी काम कर रहा है, लेकिन यह भविष्य के अपडेट में काम नहीं करेगा।

आप यह कोशिश कर सकते हैं,

 func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let backView = UIView(frame: CGRect(x: 0, y: 0, width: 80, height: 80)) backView.backgroundColor = #colorLiteral(red: 0.933103919, green: 0.08461549133, blue: 0.0839477703, alpha: 1) let myImage = UIImageView(frame: CGRect(x: 30, y: backView.frame.size.height/2-14, width: 16, height: 16)) myImage.image = #imageLiteral(resourceName: "rubbish-bin") backView.addSubview(myImage) let label = UILabel(frame: CGRect(x: 0, y: myImage.frame.origin.y+14, width: 80, height: 25)) label.text = "Remove" label.textAlignment = .center label.textColor = UIColor.white label.font = UIFont(name: label.font.fontName, size: 14) backView.addSubview(label) let imgSize: CGSize = tableView.frame.size UIGraphicsBeginImageContextWithOptions(imgSize, false, UIScreen.main.scale) let context = UIGraphicsGetCurrentContext() backView.layer.render(in: context!) let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() let delete = UITableViewRowAction(style: .destructive, title: " ") { (action, indexPath) in print("Delete") } delete.backgroundColor = UIColor(patternImage: newImage) return [delete, share] } 
 override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { let delete = UITableViewRowAction(style: .Destructive, title: "Delete") { (action, indexPath) in // delete item at indexPath } let share = UITableViewRowAction(style: .Normal, title: "Disable") { (action, indexPath) in // share item at indexPath } share.backgroundColor = UIColor.blueColor() return [delete, share] } 

उपरोक्त कोड दिखाता है कि पंक्ति पर आपकी कड़ी चोट के दौरान कस्टम बटन को कैसे बनाया जाए

यदि आप ज़ोर से मारना कार्रवाई करते समय केवल पाठ का उपयोग करना चाहते हैं तो आप आईओएस डिफ़ॉल्ट कड़ी चोट कार्रवाई का उपयोग कर सकते हैं लेकिन यदि आप छवि और पाठ चाहते हैं, तो आपको इसे कस्टमाइज़ करना होगा मुझे एक महान ट्यूटोरियल और नमूना मिला है जो इस समस्या को हल कर सकते हैं।

कस्टम स्वाइप सेल प्राप्त करने के लिए इस रिपोजिटरी को देखें। आप यहां एकाधिक विकल्प जोड़ सकते हैं।

http://iosbucket.blogspot.in/2016/04/custom-swipe-table-view-cell_16.html

https://github.com/pradeep7may/PKSwipeTableViewCell

यहां छवि विवरण दर्ज करें

जैसा कि मुझे लगता है, यह UIGestureRecognizer- आधारित कक्षों का उपयोग करने का सबसे अच्छा तरीका नहीं है

सबसे पहले, आपके पास कोर ग्राफिक्स का उपयोग करने के लिए कोई विकल्प नहीं होगा

संपूर्ण समाधान, संपूर्ण मेज दृश्य के लिए यूआईआरस्पॉन्डर या एक UIGestureRecognizer होगा। प्रत्येक UITableViewCell लिए नहीं यह आपको ऐप लगाएगा।

तालिका दृश्य में कस्टम कक्ष पर एक दृश्य बनाएं और सेल पर देखने के लिए पेंजेस्टराइकाइजर को लागू करें। कस्टम कक्ष में बटन जोड़ें, जब आप कस्टम सेल पर दृश्य को स्वाइप करते हैं तो कस्टम सेल के बटन दिखाई देंगे।

  UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; recognizer.delegate = self; [YourView addGestureRecognizer:recognizer]; 

और विधि में दृश्य पर पैनिंग को संभाल लें

  if (recognizer.state == UIGestureRecognizerStateBegan) { // if the gesture has just started, record the current centre location _originalCenter = vwCell.center; } // 2 if (recognizer.state == UIGestureRecognizerStateChanged) { // translate the center CGPoint translation = [recognizer translationInView:self]; vwCell.center = CGPointMake(_originalCenter.x + translation.x, _originalCenter.y); // determine whether the item has been dragged far enough to initiate / complete _OnDragRelease = vwCell.frame.origin.x < -vwCell.frame.size.width / 2; } // 3 if (recognizer.state == UIGestureRecognizerStateEnded) { // the frame this cell would have had before being dragged CGPoint translation = [recognizer translationInView:self]; if (_originalCenter.x+translation.x<22) { vwCell.center = CGPointMake(22, _originalCenter.y); IsvwRelease=YES; } CGRect originalFrame = CGRectMake(0, vwCell.frame.origin.y, vwCell.bounds.size.width, vwCell.bounds.size.height); if (!_deleteOnDragRelease) { // if the item is not being dragged far enough , snap back to the original location [UIView animateWithDuration:0.2 animations:^{ vwCell.frame = originalFrame; } ]; } }