Не уверен, что вы называете "динамически" ... Объекты Objective-C всегда создаются динамически. Возможно, вы имеете в виду ситуацию, когда вы хотите создать серию очень похожих кнопок с одинаковым кодом? Да, это довольно распространенная задача. Например, в калькуляторе, таком как приложение, нам нужно десять кнопок с цифрами, почему бы не создать их с одним блоком кода? Итак:
- (void)makeButtons{
UIButton * aButton;
for(int i = 0; i < 10; i++){
aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
aButton.frame = CGRectMake(0, i*45, 60, 40);
[aButton addTarget:self action:@selector(digitClick:) forControlEvents:UIControlEventTouchUpInside];
[aButton setTitle:[NSString stringWithFormat:@"%d",i] forState:UIControlStateNormal];
aButton.tag = i;
[self.view addSubview:aButton];
}
}
- (void)digitClick:(id)sender{
UIButton * aButton =(UIButton *)sender;
NSLog(@"cliced button with title %d",aButton.tag);
}
мы используем свойство tag , чтобы найти индекс нажатой кнопки, это часто используется, но есть и другие способы. Например, сохранить созданные кнопки в массиве, а затем проверить, равен ли sender одному из элементов массива:
...
if ([allButtons objectAtIndex: i] == отправитель)
...
Если вы хотите передать некоторые данные, например строку из каждой кнопки, просто создайте массив с этими объектами, а затем получите к нему доступ, используя тег в качестве индекса.