0

このコードでは、作成したボタンを押すと「無効なセレクター」エラーが発生します。関数はどこtestから取得されますか?

Main.m

mainScreen = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];
[self.view addSubview:mainScreen];

TaskButtons *tB = [[TaskButtons alloc] init];
[mainScreen addSubview:[tB TaskStart]]; 

TaskButtons.m

- (UIButton*)TaskStart {
   CGRect buttonFrame = CGRectMake(500, 206, 400, 35);
   UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
   button.frame = buttonFrame;
   [button setTitle:@"Task Button" forState:UIControlStateNormal];
   button.backgroundColor = [UIColor clearColor];
   button.titleLabel.textAlignment = UITextAlignmentLeft;
   button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
   [button setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
   [button addTarget:self action:@selector(test) forControlEvents:UIControlEventTouchUpInside];
   return button;
 }

- (void)test{
   NSLog(@"test line");
}

test関数が呼び出されていないようです。ここでボタンを設定するtargetということは、クラスで呼び出される関数selfを探す必要があるという意味ではありませんか?TaskButtonstest

4

2 に答える 2

0
[button addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];

- (void)test:(id)sender{
NSLog(@"test line");
}

構文の問題 :) コードでこれらの行を置き換えます。

于 2011-11-29T05:17:54.033 に答える
0

問題は、ARC がインスタンス化されたオブジェクトをリリースするのが早すぎることです。したがって、これを解決するには、それをより長く保持する必要があります。

Main.h

#import "TaskButtons.m"
@interface ViewController : UIViewController {
     TaskButtons *tB;
}

@property (nonatomic, retain) TaskButtons *tB;
于 2011-11-29T04:15:15.693 に答える