ユーザーはボタンをクリックできますCountryを追加するとCountry Pickerが表示され、Pickerからユーザーが選択したものはラベル/ボタンとして追加されます)をクリックします。これらの新しい削除ボタンをクリックすると、自分自身とそのラベルが削除されます。uibuttonを動的に追加し、下にある要素を下に移動してスペースを作る方法
私はすでに国ピッカーから値を取得し、私の問題は、ボタンがちょうど既存の要素の上に配置されている、ここでHow do I create a basic UIButton programmatically?
からのコードを使用してボタンを作成することができます。作成したボタンを[国を追加]ボタンまたは以前に作成したボタンの下に置いてください。以前は[国を追加]ボタンの下にあった要素はどれも下に移動する必要があります。
私はこの検索にどのような検索用語を使用すべきか分かりません。私は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];
}
EDIT2:要素が以前に動的に追加されたボタンを除いて下降される更新されたコードの関連するコードを追加しました。
// 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
ありがとう、私は2番目のオプションを試しています。最初に追加されたボタンのために働いています。下の要素は下に移動しています。しかし、2番目に追加されたボタンの場合、それをセットに追加して、それも下に移動するにはどうすればよいですか?更新されたコードは私の質問です。 – Cekk
私は簡単なことがあると思います:do elementsBelowAddCountry = [elementsBelowAddCountry setByAddingObject:countryButton];上記の方法でセットを変更することはありません。 –
うん、それはそれ:) – Cekk