Я кодирую только две функции. MailComposer и веб-просмотр. Но когда я запускаю свое приложение и перехожу на вкладку интерфейса электронной почты, происходит сбой «фатальная ошибка: неожиданно найдено nil при развертывании необязательного значения (lldb)». Когда я перехожу на вкладку, отображающую веб-просмотр, все работает нормально. Webview.loadRequest(request) что-то путает с почтовым кодированием. Но я не знаю, где я могу это сделать, чтобы обе функции работали.
Если кто-нибудь знает, как это исправить, пожалуйста, дайте мне знать. Спасибо.
Вот код для файла View.Controller.Swift...
import UIKit
import MessageUI
class ViewController: UIViewController, MFMailComposeViewControllerDelegate {
@IBOutlet weak var Webview: UIWebView!
@IBOutlet weak var Subject: UITextField!
@IBOutlet weak var Body: UITextView!
var URLPath = "http://google.com"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
loadAddressURL()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func SendEmail(sender: AnyObject) {
var SubjectText = "Inquiry:"
SubjectText += Subject.text
var MessageBody = Body
var toRecipients = ["[email protected]"]
var mc: MFMailComposeViewController = MFMailComposeViewController()
mc.mailComposeDelegate = self
mc.setSubject(SubjectText)
mc.setMessageBody(MessageBody.text, isHTML: false)
mc.setToRecipients(toRecipients)
self.presentViewController(mc, animated: true, completion: nil)
}
func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
switch result.value{
case MFMailComposeResultCancelled.value:
NSLog("Mail Cancelled")
case MFMailComposeResultSaved.value:
NSLog("Mail Saved")
case MFMailComposeResultSent.value:
NSLog("Mail Sent")
case MFMailComposeResultFailed.value:
NSLog("Mail Sent Failure: %@",[error.localizedDescription])
default:
break
}
self.dismissViewControllerAnimated(true, completion: nil)
}
func loadAddressURL(){
let requestURL = NSURL(string:URLPath)
let request = NSURLRequest(URL: requestURL!)
Webview.loadRequest(request)
}
}
!
не связаны в Interface Builder, и поэтому при первом доступе к ним!
вызывает (ожидаемый) сбой. (см. stackoverflow.com/questions/27981488/) - person GoZoner   schedule 06.03.2015!
переменные равны!= nil
, прежде чем что-либо с ними делать. - person Jojodmo   schedule 06.03.2015@IBOutlet
. Настройте Xcode с помощью «Показать редактор помощника», чтобы у вас была панель IB рядом с панелью исходного кода. (Есть и другие способы; это будет в учебнике по пользовательскому интерфейсу Xcode). Когда@IBOutlet
привязано, рядом с@IBOutlet
в исходном коде будет закрашенный кружок. - person GoZoner   schedule 06.03.2015