У меня возникла проблема с моим iOS Swift App, и я не могу решить это сам часами. У меня есть 3 View Controller:MFMessageComposeViewController непризнанный селектор, отправленный в экземпляр
View 1 (List) ---> View 2 (Detail) ---> View 3 (Contacts)
В View 3 У меня есть UITableView с моим Addressbook Контакты. При выборе MFMessageComposeViewController откройте окно Message. Если я нажимаю кнопку отправки/отмены, MFMessageComposeViewController исчезает, и я могу выбрать следующий Контакт.
Когда я вернусь назад к виду 2 и перейду на просмотр 3 снова или когда я останусь на виду 3, нет проблем с выбором одного контакта за другим и отправкой сообщения.
Но когда я вкладка назад Просмотр 1 и перейти к View 3 снова выбрать контакт, то MFMessageComposeViewController размыкается, а теперь, когда я нажимаю отправить/отменить, я получил очень странные ошибки:
Run 1: ...[__NSCFType numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x17578c90...
Run 2: ...[UIScrollView numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x14d88860...
Run 3: ...[__NSCFData numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x1466af80...
Run 4: ...[UITableViewWrapperView numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x16ebf910...
Run 5: ...[__NSCFDictionary numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x17ea9920...
Каждые Запуск - это тест с крахом. Как вы можете видеть, каждая ошибка отличается.
Мой код детали:
...
let msgComposerVC = MFMessageComposeViewController()
msgComposerVC.messageComposeDelegate = self
msgComposerVC.navigationBar.tintColor = UIColor.whiteColor()
msgComposerVC.navigationBar.barStyle = UIBarStyle.Black
msgComposerVC.recipients = ["\(phoneNumber)"]
msgComposerVC.body = body
if MFMessageComposeViewController.canSendText() {
self.presentViewController(msgComposerVC, animated: true, completion: {
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
})
}
...
func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
controller.dismissViewControllerAnimated(true, completion: nil)
if(result.value == MessageComposeResultSent.value) {
// Send .. do something...
}
}
Спасибо за помощь!
Update:
Я забыл: На свежем перспективе: Когда я иду в деталях (View 2) назад к обзору (View 1) и снова к контактам (View 3), а затем попытаться отправить первый сообщение любому контакту происходит с той же ошибкой.
Вот код, как я переключить взгляды:
// Change view from View 1 to View 2
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("View2Controller") as View2Controller
vc.event = self.events[indexPath.row] // processing Data to VC
self.showViewController(vc as UIViewController, sender: vc)
}
// Change view from View 2 to View 3
@IBAction func switchViewFunc(sender: AnyObject) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("View3Controller") as View3Controller
vc.event = self.event as NSManagedObject // processing Data to VC
self.showViewController(vc as UIViewController, sender: vc)
}
Update # 2: приложения аварий на линии controller.dismissViewControllerAnimated(true, completion: nil)
Это происходит в симуляторе или реальном устройстве? У меня было несколько подобных проблем с Mail composer в симуляторе, но на устройстве он отлично работал ... – Miknash
На реальном устройстве (iOS 8.1.3) - я проверю Симулятор. –
Да, на Симуляторе тоже ... –