カスタム テーブル ビュー セルにいくつかの UIButtons があり、それを押すと、セルが含まれるテーブル ビューのホストであるビュー コントローラーでセグエを呼び出す必要があります。現在行っていることは、次のようなアクションを宣言することです: void)アクション;
テーブルビューが含まれているクラスで。そして、次のようにセルからそのアクションを呼び出しています。
ViewController *viewController = [[ViewController alloc] init];
[viewController action];
ただし、アクションが呼び出されると、間違っていることがわかっているView Controllerのセグエはないと表示されます。セルからではなく、View Controller自体から「アクション」を呼び出すことは完全に機能します。
また、セグエを実行するコードは次のとおりです。
-(void)action {
[self performSegueWithIdentifier:@"action" sender:self];
}
どうすればこれを機能させることができますか?
任意の提案をいただければ幸いです。
更新:
次のようにセルにデリゲートを設定しようとしました:
セルのヘッダー ファイル: @class PostCellView;
@protocol PostCellViewDelegate
-(void)action;
@end
@interface PostCellView : UITableViewCell <UIAlertViewDelegate, UIGestureRecognizerDelegate>
@property (weak, nonatomic) id <PostCellViewDelegate> delegate;
セルのメイン ファイルでは、次のようにアクションを呼び出します。 [self.delegate アクション];
そして、Table View をホストするビューのヘッダーで、次のようにセルをインポートします: #import "PostCellView.h"
@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, PostCellViewDelegate>
次に、そのビューのメイン ファイルに、セル アクションがあります。
-(void)action {
[self performSegueWithIdentifier:@"action" sender:self];
}
しかし、アクションが実行されることはありません、私は確認しました。セルからアクションを呼び出したときにログに記録し、アクション自体に NSLog を配置しました。セルから呼び出したログは機能しましたが、アクションは機能しませんでした。