私は、IBで12個のボタンを手動で作成したアプリに取り組んできました。ボタンの数を動的にする必要があるため、ここでもう一度やり直して、すべてをコードで実行したいと思います。また、表示場所を手動で制御するなど、他のこともしたいと思います。
でMainViewController.h
:
@property (nonatomic, retain) IBOutlet UIButton *startButton;
@property (nonatomic, retain) IBOutlet UIButton *stopButton;
@property (nonatomic, retain) IBOutletCollection(UIButton) NSMutableArray *tiles;
- (IBAction) tilePressed:(id)sender;
- (void) initTiles;
のMainViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
[self initTiles];
}
- (void)viewDidUnload
{
[self setStartButton:nil];
[self setStopButton:nil];
[self setTiles:nil];
[super viewDidUnload];
}
-(void)initTiles
{
//tiles = [[NSMutableArray alloc] initWithCapacity:5];
for (int count = 0; count < 5; count++)
{ //I used tiles.count here, but that fails
UIButton *b = [[UIButton alloc] initWithFrame:CGRectMake(count*10+10, 10, 10, 10)];
[b setTitle:[NSString stringWithFormat:@"%i",count+1] forState:UIControlStateNormal];
[b setTag:count];
[b setHidden:NO];
[b addTarget:self action:@selector(tilePressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:b];
}
}
-(IBAction)tilePressed:(id)sender {
NSLog(@"button pressed: %i", [sender tag]);
}
私がやろうとしているのは、画面に5つのボタンを追加することです。理想的には、ボタンを作成し、後で操作できるように配列(NSMutableArray)に入れてから、MainViewControllerにスローしtiles
ます。しかし、タイルオブジェクトがないと、コントローラーにボタンを表示することすらできません。
編集:追加すると思いましたが、それらが配列に属していることは重要ではありません。重要なのは、後でそれらと対話できることです。つまり、アニメーションやチルトルのテキストの変更などがあります。ただし、最初の問題はコントローラに表示されていないということです