iOS无法识别的选择器发送到实例以从模态视图回调

时间:2012-09-29 03:52:27

标签: ios modalviewcontroller unrecognized-selector performselector

我在打电话:

emailDetailView.navigationItem.leftBarButtonItem =
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                  target:self 
                                                  action:@selector(cancel)];

emailDetailView.navigationItem.rightBarButtonItem =
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                  target:self
                                                  action:@selector(emailAddressSelected:emailAddressReturned:)];

UINavigationController *emailDetailNavCon = [[UINavigationController alloc] initWithRootViewController:emailDetailView];

[self presentModalViewController:emailDetailNavCon animated:YES] ;

这是我选择的方法:

-(void) emailAddressSelected:(NSString *)emailAddressSelectedString {
    NSLog(@"emailAddressSelected is %@", emailAddressSelectedString);
    emailAddressReturned = emailAddressSelectedString;
    [self performSelector:@selector(showMailComposeController)];
}

-(void)cancel {
    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] 
                                          animated:YES];
}

从子视图上的按钮(取消或完成)回调都没有按照我的预期进行。

我正在试图弄清楚如何点击子模态视图取消按钮关闭模态视图并显示父视图。

我也想弄清楚如何点击子模态视图中的Done按钮执行emailAddressSelected:(NSString *)emailAddressSelectedString方法。

现在,对emailAddressSelected:(NSString *)emailAddressSelectedString方法的调用正在生成“发送到实例的无法识别的选择器”错误。

我尝试过以前的问题,但仍然遇到错误,或者没有得到我期望的按钮操作。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

不确定取消选择器有什么问题,但您的完成选择器不正确。应该是

@selector(emailAddressSelected:)

但是它不会将NSString传递给你的方法。它将传递发件人,在您的情况下是UIBarButtonItem。

那应该是

    -(void) emailAddressSelected:(UIBarButtonItem * )sender