【问题标题】:Creating a separate subject for a different button?为不同的按钮创建单独的主题?
【发布时间】:2018-02-06 19:59:37
【问题描述】:

我试图让我用if indexPath.section == 1 && indexPath.row == 0if indexPath.section == 1 && indexPath.row == 1 显示的两个不同按钮在我提取电子邮件时具有不同的主题。两个按钮拉出同一个主题(建议:)。我将如何让程序区分它们?

import UIKit
import Foundation
import MessageUI

class AccountViewController: UITableViewController, MFMailComposeViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = false
        self.navigationController?.view.backgroundColor = .clear

    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.section == 1 && indexPath.row == 1{
            print("pressed")
            let mailComposeViewController2 = configureMailController()
            if MFMailComposeViewController.canSendMail() {
                self.present(mailComposeViewController2, animated: true, completion: nil)
            } else {
                showMailError()
            }
        }
        if indexPath.section == 1 && indexPath.row == 0 {
            print("pressed")
            let mailComposeViewController = configureMailController()
            if MFMailComposeViewController.canSendMail() {
                self.present(mailComposeViewController, animated: true, completion: nil)
            } else {
                showMailError()
            }
        }
    }
    //if indexPath.section == 1 && indexPath.row == 1 {

    //}
        func configureMailController() -> MFMailComposeViewController {
            let mailComposerVC = MFMailComposeViewController()
            mailComposerVC.mailComposeDelegate = self
            mailComposerVC.setToRecipients(["SolsticeOfficialLLC@gmail.com"])
            mailComposerVC.setSubject("Suggestion: ")

            return mailComposerVC
        }
        func configureMailController2() -> MFMailComposeViewController {
            let mailComposerVC = MFMailComposeViewController()
            mailComposerVC.mailComposeDelegate = self
            mailComposerVC.setToRecipients(["SolsticeOfficialLLC@gmail.com"])
            mailComposerVC.setSubject("Report: ")

            return mailComposerVC
        }
        func showMailError() {
            let sendMailErrorAlert = UIAlertController(title: "Could not send email", message: "Your device could not send email", preferredStyle: .alert)
            let dismiss = UIAlertAction(title: "OK", style: .default, handler: nil)
            sendMailErrorAlert.addAction(dismiss)
            self.present(sendMailErrorAlert, animated: true, completion: nil)
        }
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith: MFMailComposeResult, error: Error?){
            controller.dismiss(animated: true, completion: nil)
        }

}

【问题讨论】:

    标签: swift xcode uitableview mfmailcomposeviewcontroller


    【解决方案1】:

    您在两个按钮上调用相同的方法。像这样更改您的代码。

    import UIKit
    import Foundation
    import MessageUI
    
    class AccountViewController: UITableViewController, MFMailComposeViewControllerDelegate {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
            self.navigationController?.navigationBar.shadowImage = UIImage()
            self.navigationController?.navigationBar.isTranslucent = false
            self.navigationController?.view.backgroundColor = .clear
    
        }
    
        override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            if indexPath.section == 1 && indexPath.row == 1{
                print("pressed")
                let mailComposeViewController2 = configureMailController2() //Your error was in this line
                if MFMailComposeViewController.canSendMail() {
                    self.present(mailComposeViewController2, animated: true, completion: nil)
                } else {
                    showMailError()
                }
            }
            if indexPath.section == 1 && indexPath.row == 0 {
                print("pressed")
                let mailComposeViewController = configureMailController()
                if MFMailComposeViewController.canSendMail() {
                    self.present(mailComposeViewController, animated: true, completion: nil)
                } else {
                    showMailError()
                }
            }
        }
        //if indexPath.section == 1 && indexPath.row == 1 {
    
        //}
            func configureMailController() -> MFMailComposeViewController {
                let mailComposerVC = MFMailComposeViewController()
                mailComposerVC.mailComposeDelegate = self
                mailComposerVC.setToRecipients(["SolsticeOfficialLLC@gmail.com"])
                mailComposerVC.setSubject("Suggestion: ")
    
                return mailComposerVC
            }
            func configureMailController2() -> MFMailComposeViewController {
                let mailComposerVC = MFMailComposeViewController()
                mailComposerVC.mailComposeDelegate = self
                mailComposerVC.setToRecipients(["SolsticeOfficialLLC@gmail.com"])
                mailComposerVC.setSubject("Report: ")
    
                return mailComposerVC
            }
            func showMailError() {
                let sendMailErrorAlert = UIAlertController(title: "Could not send email", message: "Your device could not send email", preferredStyle: .alert)
                let dismiss = UIAlertAction(title: "OK", style: .default, handler: nil)
                sendMailErrorAlert.addAction(dismiss)
                self.present(sendMailErrorAlert, animated: true, completion: nil)
            }
        func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith: MFMailComposeResult, error: Error?){
                controller.dismiss(animated: true, completion: nil)
            }
    
    }
    

    【讨论】:

      【解决方案2】:

      您正在为两行调用 configureMailController,而您应该为第二行调用 configureMailController2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-05
        • 2019-10-02
        • 2018-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多