• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 从实用程序应用导航 Controller View 发送到实例错误的无法识别的选择器

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:06:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个实用程序。我在反面实现了这段代码,它调用一个反馈 View 来发送电子邮件,就像这样 tutorial .这可行,但是当我单击发送反馈 UIButton 时,我的应用程序立即崩溃并显示 *** 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[UIViewController sendMail]: unrecognized selector sent to instance 0x89c1960 '.

我已经检查了这些东西:

我已经正确声明了委托(delegate)并为 MailComposer 实现了它。

我的方法 sendMail 连接到按钮的 TouchUp 事件。

我的方法名称同意:

- (IBAction)sendMail;

- (IBAction)sendMail 
{
if ([MFMailComposeViewController canSendMail]) 
{
    MFMailComposeViewController *mfViewController = [[MFMailComposeViewController alloc] init];
    mfViewController.mailComposeDelegate = self;

    [self presentModalViewController:mfViewController animated:YES];

}
else 
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle"Status:" message"Your phone is not currently configured to send mail." delegate:nil cancelButtonTitle"ok" otherButtonTitles:nil];

    [alert show];
}

}

代码没有到达这个方法,因为我在方法实现的顶部设置了一个断点,但没有被调用。 ViewDidLoad 处的断点也没有被激活。

仔细查看这个错误:

reason: '-[UIViewController sendMail]: unrecognized selector sent to instance 

它似乎需要一个名为 sendMail 而不是方法的 View Controller 。我读到了 post这看起来非常相似,但我在 xib Identity 下拉列表中看不到任何其他 View Controller 名称。我认为这是我的问题的一部分,但我不知道如何解决它。

也许我应该通过 View Controller 展示 MFMailComposer?如果是这样,我不知道该怎么做。

任何建议将不胜感激。



Best Answer-推荐答案


您错误地将类型 UIViewController 分配给您的自定义 View Controller 。您应该选择实际应用于您的自定义 View Controller 的类类型(包含方法实现 sendMail 的类类型)。

您的代码/设置的问题在于您的自定义 View Controller 被实例化为 UIViewController 类型。但是,UIViewController 没有实现任何名为 sendMail 的方法,因此会出现异常。

由于您没有指定自定义 View Controller 的类名,因此为了这个答案,我将简单地假设一个; MyCustomViewController

由于您似乎使用 InterfaceBuilder 来设置这些东西,因此请使用它将 View Controller 的类型更改为 MyCustomViewController

enter image description here

编辑

从您的评论中,我可以看到您实际上使用代码实例化了 View Controller 。在这种情况下,请用以下方式替换您的方式:

MyCustomViewController *controller = [[MyCustomViewController alloc] initWithNibName"ExMobSendFeedback" bundle:nil]; 
controller.title = @"Feedback"; 
[self.navigationController pushViewController:controller animated:YES];
[controller release];

关于ios - 从实用程序应用导航 Controller View 发送到实例错误的无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399695/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap