ios - UITableView 中的 MFMessageComposeViewController (Swift)

标签 ios swift uitableview uiviewcontroller

我试图从自定义 TableViewCell 类中显示 MFMessageComposeViewController,但我收到一条错误消息:“从类 UITableViewCell 和 UIViewController 的多重继承。”我知道 UIViewController 是 MFMessageComposeViewController 所必需的,那么我该如何解决这个问题?

我的代码:

class TableViewCell: UITableViewCell, MFMessageComposeViewControllerDelegate {

  var userNumber: String!

 @IBAction func callButton(sender: AnyObject) {

    UIApplication.sharedApplication().openURL(NSURL(string: "telprompt://\(userNumber)")!)

}

@IBAction func textButton(sender: AnyObject) {

    let message = MFMessageComposeViewController()
    message.body = ""
    message.recipients = ["\(userNumber)"]
    message.messageComposeDelegate = self


}

func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {


}

最佳答案

您确实需要一个 UIViewController 来呈现一个 MFMessageComposeViewController。要解决您的问题,您可以向 TableViewCell 添加一个属性:

var viewController: UIViewController?

您需要在 cellForRowAtIndexPath 函数中分配当前 View Controller - 如果 View Controller 是 TableView 的数据源,这将只是 cell.viewController = self.

然后,在 textButton 函数中,您可以显示消息编写器:

self.viewController.presentViewController(message, true, nil)

对于didFinishWithResult中的解雇,只需调用

self.viewController.dismissViewController(true, nil)

关于ios - UITableView 中的 MFMessageComposeViewController (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862286/

相关文章:

ios - SpriteKit 按钮保持按下状态

arrays - 在 UITableView 的层次结构中对数组进行排序

swift - 在 Apple Watch 3 上检索相对高度信息时出现问题

IOS 应用程序因 [UITableView reloadData] 而崩溃

ios - 一起使用 Nib 和 Storyboard

ios - iPhone登录UINavigationController内的其他页面

ios - Swift - 颜色填充动画

ios - 在objective-c的 TableView 中显示搜索结果

ios - 使用GCDAsyncSocket传输文件接收器

swift - Swift 中的多模块项目