2

私のアプリの1つのviewControllerには、プログラムで追加された20個ほどのボタンの長いリストがあります。これらはすべて同じメソッドを呼び出しますが、ボタンタグで自分自身を識別しますが、問題が発生したため、数時間の調査と試行。基本的な問題は、プログラムで作成されたボタンに、初期化された方法以外の方法でアクセスする方法がよくわからないことです。

私の質問は要約されました:

1)viewDidLoadメソッドでボタンを作成する場合、作成したvoidメソッドでボタンにアクセスするにはどうすればよいですか?

2)作成されたvoidメソッドでこれらのボタンタグにアクセスするにはどうすればよいですか?

これが私がこれまでに持っているコードですが、それは以下で説明できないエラーを生成しています。

-(void)viewDidLoad{
float itemScrollerXdirection =0;
float itemScrollerYdirection =0;
float ySize =70.0;
float xSize = 70.0;

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(itemScrollerXdirection,itemScrollerYdirection,xSize,ySize);
[button addTarget:self action:@selector(itemSelected) forControlEvents:UIControlEventTouchUpInside];
button.tag =1;
[button setTitle:@"button1" forState:UIControlStateNormal];
[itemScroller addSubview:button];
}
//no errors in the above code

-(void)itemSelected{


if ([sender tag] == 1) {  //Gets error "Use of undeclaired identifier 'sender'"
    button.hidden = YES; //Gets error "Use of undeclaired identifier 'button1'"
}
}
4

2 に答える 2

3

私たちはルビーの神秘的な領域で働いていません。あなたがそれらを呼び出すために、物事を初期化してどこかに保存する必要があります、これを試してください:

#.h
@interface MyController : UIViewController{
   NSMutableArray *buttons;
}

#.m
-(void)init // Or whatever you use for init
{
   buttons = [[NSMutableArray alloc] init];
}

-(void)viewDidLoad{
  //blah blah (what you already have)

  [button addTarget:self action:@selector(itemSelected:)     //Add ":"
               forControlEvents:UIControlEventTouchUpInside];
  button.tag =0;

  [buttons addObject:button] //Add button to array of buttons

  //blah blah (what you already have)
}

-(IBAction)itemSelected:(id)sender{
   UIButton* button = [buttons objectAtIndex:sender.tag]
   button.hidden = YES;
}

注:これはメモリから実行しているため、完全に機能しない可能性があります。

于 2012-12-15T03:45:32.533 に答える
2
#.h
@interface MyController : UIViewController{
   UIButton *buttons;
}

#.m

-(void)viewDidLoad{
float itemScrollerXdirection =0;
float itemScrollerYdirection =0;
float ySize =70.0;
float xSize = 70.0;

 self.button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 self.button.frame = CGRectMake(itemScrollerXdirection,itemScrollerYdirection,xSize,ySize);
[self.button addTarget:self action:@selector(itemSelected) forControlEvents:UIControlEventTouchUpInside];
 self.button.tag =1;
[self.button setTitle:@"button1" forState:UIControlStateNormal];
[itemScroller addSubview:button];
}
//no errors in the above code

-(void)itemSelected
 { 
      if ([sender tag] == 1) 
      {  
        self.button.hidden = YES;
      }
  }
于 2012-12-15T03:49:37.430 に答える