Идея состоит в том, что пользователь может нажать кнопку «Добавить страну», появится окно выбора страны, и все, что пользователь выберет из средства выбора, будет добавлено как метка / кнопки (удаление из США) под кнопкой «Добавить страну».Эти новые кнопки удаления при нажатии удалят себя и их метки.
Я уже могу получить значение из палитры «Страна» и создать здесь кнопку с помощью кода Как программно создать базовую UIButton?
Моя проблема в том, что кнопка просто располагается поверх существующих элементов.Я хотел бы, чтобы созданные кнопки находились под кнопкой «Добавить страну» или под ранее созданными кнопками.Независимо от того, какой элемент был ранее ниже, кнопка Добавить страну должна сдвинуться вниз.
Я даже не знаю, какие условия поиска мне следует использовать, чтобы зайти в Google.Я думал об использовании uitableview, чтобы содержать только что созданные кнопки, и он как-то расширялся, но мне тоже не повезло с этим.Кстати, я использую раскадровку.
РЕДАКТИРОВАТЬ: Добавлен соответствующий код:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// get text of selected option
NSString *pickedText;
if ([pickerView tag] == 201) {
pickedText = [arrCountries objectAtIndex:row];
}
else if([pickerView tag] == 202) {
pickedText = [arrLanguages objectAtIndex:row];
}
// create button
UIButton *countryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[countryButton addTarget:self
action:@selector(removeCountry:)
forControlEvents:UIControlEventTouchUpInside];
[countryButton setTitle:pickedText forState:UIControlStateNormal];
countryButton.frame = CGRectMake(0, 210.0, 160.0, 40.0);
[self.view addSubview:countryButton];
// hide picker
[countryPicker setHidden:YES];
[languagePicker setHidden:YES];
}
- (void)removeCountry:(UIButton *)countryButton
{
[countryButton removeFromSuperview];
}
РЕДАКТИРОВАТЬ2: Обновлен код, в котором элементы перемещаются вниз, за исключением ранее динамически добавленной кнопки.
// create button
UIButton *countryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[countryButton addTarget:self
action:@selector(removeCountry:)
forControlEvents:UIControlEventTouchUpInside];
[countryButton setTitle:pickedText forState:UIControlStateNormal];
CGRect newFrame = addCountryButton.frame;
newFrame.origin.y = newFrame.origin.y + addCountryButton.frame.size.height + countryButton.frame.size.height;
countryButton.frame = newFrame;
[self.view addSubview:countryButton];
// move elements down
[elementsBelowAddCountry enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
CGRect newFrame = [obj frame];
newFrame.origin.y = newFrame.origin.y + countryButton.frame.size.height;
[obj setFrame:newFrame];
NSLog(@"object %@", obj);
}];
[elementsBelowAddCountry setByAddingObject:countryButton];
// this doesn't work. new countryButton is set on top of previous countryButton