2015-02-10 114 views
0

我的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)

+0

这是发生在模拟器还是真实的设备?我在模拟器上有几个类似的问题,但在设备上它的工作完美... – Miknash 2015-02-10 14:06:09

+0

在真实设备(iOS 8.1.3) - 我会检查模拟器。 – 2015-02-10 14:19:53

+0

是的,在模拟器上也是... – 2015-02-10 14:28:07

回答

0

我想我知道了......

的问题不是MFMessageComposeViewController或controller.dismissViewControllerAnimated(true, completion: nil)

在视图2和视图3上我在NavigationController中创建了自定义的弹出窗口。我在viewDidLoad做过。现在我创建这些弹出窗口在viewWillAppear删除导航控制器视图子视图在viewWillDisappear

似乎工作...

相关问题