मैं अपने ऐप में समान कार्यक्षमता जोड़ने के लिए देख रहा था, और इतने सारे अलग-अलग ट्यूटोरियल ( रेवेंडरलिच सबसे अच्छा DIY समाधान) के माध्यम से जाने के बाद , मुझे पता चला कि ऐप्पल का अपना खुद का हैUITableViewRowAction
वर्ग है, जो बहुत आसान है।
आपको इसके लिए Tableview की बॉयलरप्वाइंट विधि को बदलना होगा:
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
// 1
var shareAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Share" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
// 2
let shareMenu = UIAlertController(title: nil, message: "Share using", preferredStyle: .ActionSheet)
let twitterAction = UIAlertAction(title: "Twitter", style: UIAlertActionStyle.Default, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
shareMenu.addAction(twitterAction)
shareMenu.addAction(cancelAction)
self.presentViewController(shareMenu, animated: true, completion: nil)
})
// 3
var rateAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Rate" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
// 4
let rateMenu = UIAlertController(title: nil, message: "Rate this App", preferredStyle: .ActionSheet)
let appRateAction = UIAlertAction(title: "Rate", style: UIAlertActionStyle.Default, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
rateMenu.addAction(appRateAction)
rateMenu.addAction(cancelAction)
self.presentViewController(rateMenu, animated: true, completion: nil)
})
// 5
return [shareAction,rateAction]
}
आप इस साइट पर इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं । पृष्ठभूमि का रंग बदलने के लिए Apple का स्वयं का दस्तावेज़ वास्तव में उपयोगी है:
कार्रवाई बटन की पृष्ठभूमि का रंग।
घोषणा OBJECTIVE-C @property (गैर-परमाणु, प्रतिलिपि) UIColor * backgroundColor चर्चा इस गुण का उपयोग अपने बटन के लिए पृष्ठभूमि का रंग निर्दिष्ट करने के लिए करें। यदि आप इस संपत्ति के लिए कोई मान निर्दिष्ट नहीं करते हैं, तो UIKit शैली संपत्ति में मूल्य के आधार पर एक डिफ़ॉल्ट रंग प्रदान करता है।
उपलब्धता आईओएस 8.0 और बाद में उपलब्ध है।
यदि आप बटन के फॉन्ट को बदलना चाहते हैं, तो यह थोड़ा और मुश्किल है। मैंने SO पर एक और पोस्ट देखी है । कोड के साथ-साथ लिंक प्रदान करने के लिए, यहाँ कोड का उपयोग किया गया है। आपको बटन की उपस्थिति बदलनी होगी। आपको टेबलव्यू के लिए एक विशिष्ट संदर्भ बनाना होगा, अन्यथा आप अपने ऐप में बटन की उपस्थिति को बदल देंगे (मैं ऐसा नहीं चाहता था, लेकिन आप शायद मुझे नहीं जानते :))
उद्देश्य सी:
+ (void)setupDeleteRowActionStyleForUserCell {
UIFont *font = [UIFont fontWithName:@"AvenirNext-Regular" size:19];
NSDictionary *attributes = @{NSFontAttributeName: font,
NSForegroundColorAttributeName: [UIColor whiteColor]};
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString: @"DELETE"
attributes: attributes];
/*
* We include UIView in the containment hierarchy because there is another button in UserCell that is a direct descendant of UserCell that we don't want this to affect.
*/
[[UIButton appearanceWhenContainedIn:[UIView class], [UserCell class], nil] setAttributedTitle: attributedTitle
forState: UIControlStateNormal];
}
स्विफ्ट:
//create your attributes however you want to
let attributes = [NSFontAttributeName: UIFont.systemFontOfSize(UIFont.systemFontSize())] as Dictionary!
//Add more view controller types in the []
UIButton.appearanceWhenContainedInInstancesOfClasses([ViewController.self])
यह सबसे आसान और सबसे स्ट्रीम-लाइन वाला संस्करण IMHO है। आशा करता हूँ की ये काम करेगा।
अद्यतन: यहाँ स्विफ्ट 3.0 संस्करण है:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
var shareAction:UITableViewRowAction = UITableViewRowAction(style: .default, title: "Share", handler: {(action, cellIndexpath) -> Void in
let shareMenu = UIAlertController(title: nil, message: "Share using", preferredStyle: .actionSheet)
let twitterAction = UIAlertAction(title: "Twitter", style: .default, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
shareMenu.addAction(twitterAction)
shareMenu.addAction(cancelAction)
self.present(shareMenu,animated: true, completion: nil)
})
var rateAction:UITableViewRowAction = UITableViewRowAction(style: .default, title: "Rate" , handler: {(action, cellIndexpath) -> Void in
// 4
let rateMenu = UIAlertController(title: nil, message: "Rate this App", preferredStyle: .actionSheet)
let appRateAction = UIAlertAction(title: "Rate", style: .default, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
rateMenu.addAction(appRateAction)
rateMenu.addAction(cancelAction)
self.present(rateMenu, animated: true, completion: nil)
})
// 5
return [shareAction,rateAction]
}