Swift 2开发完全可定制和可扩展的Action sheet controller
XLActionController 是一个可扩展的库用于快速创建任何定制的action sheet controller。
Examples
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
The action sheet controllers shown above were entirely created using XLActionController and are included in the Examples. To run the Example project: clone XLActionController repository, open XLActionController workspace and run the Example project.
The code snippet below shows how to present the Tweetbot action sheet controller:
let actionController = TweetbotActionController() actionController.addAction(Action("View Details", style: .Default, handler: { action in // do something useful })) actionController.addAction(Action("View Retweets", style: .Default, handler: { action in // do something useful })) actionController.addAction(Action("View in Favstar", style: .Default, handler: { action in // do something useful })) actionController.addAction(Action("Translate", style: .Default, handler: { action in // do something useful })) actionController.addSection(Section()) actionController.addAction(Action("Cancel", style: .Cancel, handler:nil)) presentViewController(actionController, animated: true, completion: nil)
As you may have noticed, the library usage looks pretty similar to UIAlertController.
Behind the scenes XLActionController uses a UICollectionView to display the action sheet.
Usage
First create a custom action sheet view controller by extending from theActionControllergeneric class. For details on how to create a custom action sheet controller look at the Extensibility section.
For instance, let's suppose we've already created 推terActionController.
// Instantiate custom action sheet controller let actionSheet = 推terActionController() // set up a header title actionSheet.headerData = "Accounts" // Add some actions, note that the first parameter of `Action` initializer is `ActionData`. actionSheet.addAction(Action(ActionData(title: "Xmartlabs", subtitle: "@xmartlabs", image: UIImage(named: "tw-xmartlabs")!), style: .Default, handler: { action in // do something useful })) actionSheet.addAction(Action(ActionData(title: "Miguel", subtitle: "@remer88", image: UIImage(named: "tw-remer")!), style: .Default, handler: { action in // do something useful })) // present actionSheet like any other view controller presentViewController(actionSheet, animated: true, completion: nil)