1

nib ファイルに独自のカスタム セルを作成しましたが、理解できないエラーが表示されます。

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

この行でNo visible @interface for "LeadCell" declares the selector presentViewController:animated:completion: 、LeadCell is the name of the controller for the custom というエラーが表示されます。ユーザーがボタンをクリックするとメール コンポーザー ビューが開き、メールを送信するアクションを作成したいと考えています。

明確さをいただければ幸いです。

4

2 に答える 2

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];
于 2013-01-07T04:03:31.793 に答える
2

UITableViewCell のサブクラスからビュー コントローラーを提示しようとしているためです。UITableViewCellView Controllerを表示するためのそのような方法はありません。

presentViewController メソッドは、ViewController とそのサブクラスに対して宣言されています。

tableViewCell はビューコントローラーではなく、ビューです。したがって、presentViewControllerforのようなメソッドはありませんUITableViewCell

于 2013-01-07T04:01:15.457 に答える