2015-04-04 46 views
1

我正在寻找一种方法来链接功能为用户的行动工作表的按钮如何用swift激活动作表按钮?

我做了删除按钮的功能,但我需要的报告按钮,使用户能够发送电子邮件,如何用迅速做到这一点?谢谢

override func tableView(tableView: UITableView,editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 

    var ReportAction = UITableViewRowAction(style: .Default, title: "Report User", handler: {(action: UITableViewRowAction! , indexPath:NSIndexPath!) -> Void in 

     let ReportMenu = UIAlertController(title: nil, message: "Report using", preferredStyle: UIAlertControllerStyle.ActionSheet) 
     let Reportbutton = UIAlertAction(title: "E-Mail", style: .Default , handler: nil) 

     ReportMenu.addAction(Reportbutton) 
     self.presentViewController(ReportMenu, animated: true, completion: nil) 


    }) 

     var DeleteButton = UITableViewRowAction(style: UITableViewRowActionStyle.Default , title: "Delete", handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in 

      self.Array1.removeAtIndex(indexPath.row) 
      self.Array2.removeAtIndex(indexPath.row) 
      self.Array3.removeAtIndex(indexPath.row) 
      self.Array4.removeAtIndex(indexPath.row) 
      self.Array5.removeAtIndex(indexPath.row) 


      self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 

    } 
    ) 
    return [DeleteButton , ReportAction] 



} 

回答

0

你可以这样来做:

let Reportbutton = UIAlertAction(title: "E-Mail", style: UIAlertActionStyle.Default) { (alert) -> Void in 

      //Your code 
     } 

这里是示例代码为您发送E-mail:

import UIKit 
import MessageUI 

class TableViewController: UITableViewController, MFMailComposeViewControllerDelegate { 

var tabledata = ["1","2","3","4"] 
override func viewDidLoad() { 
    super.viewDidLoad() 
} 
// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return tabledata.count 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell 

    // Configure the cell... 
    cell.textLabel?.text = tabledata[indexPath.row] 
    return cell 
} 

override func tableView(tableView: UITableView,editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 

    var ReportAction = UITableViewRowAction(style: .Default, title: "Report User", handler: {(action: UITableViewRowAction! , indexPath:NSIndexPath!) -> Void in 

     let ReportMenu = UIAlertController(title: nil, message: "Report using", preferredStyle: UIAlertControllerStyle.ActionSheet) 
     let Reportbutton = UIAlertAction(title: "E-Mail", style: UIAlertActionStyle.Default) { (alert) -> Void in 

      self.displayMailComposerSheet() 
     } 
     ReportMenu.addAction(Reportbutton) 
     self.presentViewController(ReportMenu, animated: true, completion: nil) 


    }) 

    var DeleteButton = UITableViewRowAction(style: UITableViewRowActionStyle.Default , title: "Delete", handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in 

     self.tabledata.removeAtIndex(indexPath.row) 



     self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 

     } 
    ) 
    return [DeleteButton , ReportAction] 
} 

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
} 

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
    switch editingStyle { 
    case .Delete: 

     // remove the deleted item from the model 
     self.tabledata.removeAtIndex(indexPath.row) 
     // remove the deleted item from the `UITableView` 
     self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    default: 
     return 
    } 
} 

func displayMailComposerSheet(){ 

    //vars 
    var controller = MFMailComposeViewController() 
    controller.mailComposeDelegate = self 

    //set 
    controller.navigationBar.tintColor = UIColor.whiteColor() 

    //set 
    UINavigationBar.appearance().translucent = false 
    UINavigationBar.appearance().barTintColor = UIColor.whiteColor() 
    UINavigationBar.appearance().tintColor = UIColor.blackColor() 
    var attributes = NSDictionary(objectsAndKeys: UIFont(name: "HelveticaNeue-Light", size: 20)!,NSFontAttributeName, UIColor.whiteColor(), NSForegroundColorAttributeName) 
    UINavigationBar.appearance().titleTextAttributes = attributes 

    //set 
    var toRecipients = NSArray(object: "[email protected]") 
    controller.setToRecipients(toRecipients) 
    controller.setSubject("App Support") 

    //show 
    presentViewController(controller, animated: true, completion: { 

     UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.Default, animated: true) 
    }) 
    } 
} 
+0

烨它是正确的答案,也关闭邮件编辑器添加此代码 func mailComposeController(controller:MFMailComposeViewController!,didFinishWithResult result:MFMailComposeResult,error:NSError!){ self.dismissViewControllerAnim ated(true,completion:nil) } – 2015-04-04 07:13:51