3

カスタム テーブル ビュー セルにいくつかの 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 を配置しました。セルから呼び出したログは機能しましたが、アクションは機能しませんでした。

4

2 に答える 2

1

あなたの問題はこれにあると思います。ViewController *viewController = [[ViewController alloc] init]; [viewController action]; 新しいViewControllerを開始していて、セルが入っている現在のものを取得していません.

おそらく、セルにデリゲートを設定して、セルがviewControllerへの参照を持つようにすることができます

于 2012-10-06T22:37:56.673 に答える
0

ボタンを作成し、そのハンドラーをプログラムで呼び出す簡単な方法は次のとおりです。

UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(100, 100, 80, 40)];
[button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:button]; //self.view is the view on which you want to add button

そのハンドラーは、実装ファイルで次のように定義する必要があります。

-(void)buttonClick:(id)sender{
    NSLog(@"button clicked");
    // your code on click of button 
}

iOS ドキュメントを確認できます。

これがあなたの問題を見つけるのに役立つことを願っています。:)

于 2012-10-06T21:45:30.420 に答える