尝试使用内部按钮在自定义单元格内创建IBAction

时间:2013-01-07 03:34:46

标签: objective-c ios uitableview mfmailcomposeviewcontroller

我在nib文件中创建了一个自己的自定义单元格,我收到一个我不明白的错误。

[self presentViewController:_myMail animated:YES completion:nil];

在此行中,我收到错误No visible @interface for "LeadCell" declares the selector presentViewController:animated:completion: LeadCell是自定义控制器的名称。我想创建一个操作,用户单击该按钮,然后打开邮件编辑器视图以发送电子邮件。

任何清晰度都将受到赞赏。

2 个答案:

答案 0 :(得分:5)

解决此问题的一种简洁方法是将视图控制器与自定义单元格一起存储,如下所示:

@interface LeadCell {
    __weak UIViewController *ctrl;
}
-(id)initWithViewController:(UIViewController*)c;
...
@end

@implementation LeadCell

-(id)initWithViewController:(UIViewController*)c {
    if (self = [super init]) {
        ctlr = c;
    }
    return self;
}

@end

在“索引路径中的行的单元格”中创建新单元格时,将视图控制器传递给单元格的初始值设定项。通过这种方式,单元格可以“找到”控制器,让您使用ctrl代替self来编写操作代码:

[ctrl presentViewController:_myMail animated:YES completion:nil];

答案 1 :(得分:2)

因为您正在尝试从UITableViewCell的子类呈现视图控制器。 UITableViewCell没有用于呈现视图控制器的方法。

为ViewController和它的子类声明了presentViewController方法。

tableViewCell不是viewcontroller,它是一个视图。因此presentViewController没有像UITableViewCell这样的方法。