MFMessageComposeViewController发送到实例的无法识别的选择器
我的iOS Swift应用程序出现问题,我无法自行解决数小时。我有3视图控制器:MFMessageComposeViewController发送到实例的无法识别的选择器
View 1 (List) ---> View 2 (Detail) ---> View 3 (Contacts)
在视图3我有一个UITableView与我的AddressBook联系人。在选择MFMessageComposeViewController时打开消息窗口。如果我按发送/取消MFMessageComposeViewController消失,我可以选择下一个联系人。
当我回退到查看2并再次转发到查看3或当我留在查看3时,选择一个接一个接一个地发送消息没有问题。
但是当我标签背面可以看到并导航到再次查看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...
}
}
感谢您的帮助!
更新:
我忘了:在一个新的运行:当我去详细信息(查看2),回到概述(查看1),并再次联系方式(点击查看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)
}
更新#2:应用程序崩溃在线controller.dismissViewControllerAnimated(true, completion: nil)
我想我知道了......
的问题不是MFMessageComposeViewController或controller.dismissViewControllerAnimated(true, completion: nil)
。
在视图2和视图3上我在NavigationController中创建了自定义的弹出窗口。我在viewDidLoad
做过。现在我创建这些弹出窗口在viewWillAppear
和删除导航控制器视图子视图在viewWillDisappear
。
似乎工作...
这是发生在模拟器还是真实的设备?我在模拟器上有几个类似的问题,但在设备上它的工作完美... – Miknash 2015-02-10 14:06:09
在真实设备(iOS 8.1.3) - 我会检查模拟器。 – 2015-02-10 14:19:53
是的,在模拟器上也是... – 2015-02-10 14:28:07