Я создаю небольшую игру с интерфейсом, который очень похож на 4 картинки 1 слово. Текущая настройка до сих пор выглядит следующим образом: Пользователь получает 7-буквенное слово, генерируемое случайным образом. Существует массив, который принимает 7 букв, а затем случайным образом заполнит их с другими буквами в 12 программно созданных UIButtons:Использование UiButtons, заполненное буквами, чтобы сделать слова
for (int i=0; i< buttonCount; i++) {
int xpositiong = x + 37;
x = xpositiong;
isSeven ++;
restAt7 ++;
NSString *stringFromInt = [NSString stringWithFormat:@"%@",[arrayForRound objectAtIndex:i]];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self
action:@selector(buttonSelected:)
forControlEvents:UIControlEventTouchDown];
[button setTitle:stringFromInt forState:UIControlStateNormal];
button.titleLabel.font = [UIFont fontWithName:@"helvetica" size:19];
button.tag = i+10;
_letterButton = button;
if (restAt7 == 7) {
x = 47;
}
if (isSeven <= 6) {
button.frame = CGRectMake(x,333,40,40);
}
else
{
button.frame = CGRectMake(x,370,40,40);
}
[self.view addSubview:button];
}
Существует также вторая область кнопок, однако они являются статическими и представляют собой, как «слово» , Когда выбрана одна из 12 букв, она принимает метку выбранной кнопки и заполняет одну из соответствующих кнопок «слово».
-(void)buttonSelected : (UIButton *)sender
{
NSLog(@"sender %i", sender.tag);
UIButton *button = (UIButton *)[self.view viewWithTag:sender.tag];
button.hidden = YES;
if ([_buttonOne.titleLabel.text isEqualToString: @" "]) {
// NSLog(@"button is nil");
[_buttonOne setTitle:sender.titleLabel.text forState:UIControlStateNormal];
[_buttonOne setTag:button.tag];
}
else if ([_buttonTwo.titleLabel.text isEqualToString:@" "])
{
[_buttonTwo setTitle:sender.titleLabel.text forState:UIControlStateNormal];
}
else if ([_buttonThree.titleLabel.text isEqualToString:@" "])
{
[_buttonThree setTitle:sender.titleLabel.text forState:UIControlStateNormal];
}
else if ([_buttonFour.titleLabel.text isEqualToString:@" "])
{
[_buttonFour setTitle:sender.titleLabel.text forState:UIControlStateNormal];
}
else if ([_buttonFive.titleLabel.text isEqualToString:@" "])
{
[_buttonFive setTitle:sender.titleLabel.text forState:UIControlStateNormal];
}
else if ([_buttonSix.titleLabel.text isEqualToString:@" "])
{
[_buttonSix setTitle:sender.titleLabel.text forState:UIControlStateNormal];
}
else if ([_buttonSeven.titleLabel.text isEqualToString:@" "])
{
[_buttonSeven setTitle:sender.titleLabel.text forState:UIControlStateNormal];
}
}
Правильно! Вот мой вопрос. Если пользователь решит, что выбрал неправильную букву и хочет удалить эту букву, они могут нажать одну из 7 кнопок, чтобы удалить эту букву. Однако я не знаю, как скрыть соответствующую кнопку, которая изначально была заполнена письмом ...
Я уверен, что это имеет какое-то отношение к сохранению тега выбранной кнопки, однако, поскольку каждая из 7 кнопок присвоенный тегом. Я не уверен, как это сделать.
EDIT:
Я развесить решение, которое работало. Также все функции были переписаны с помощью циклов.
-(void)buttonSelected : (UIButton *)sender
{
NSLog(@"sender %i", sender.tag);
UIButton *button = (UIButton *)[self.view viewWithTag:sender.tag];
button.hidden = YES;
for (int i = 0; i < _wordButtonsArray.count; i ++) {
UIButton *selectedButton = [_wordButtonsArray objectAtIndex:i];
if ([selectedButton.titleLabel.text isEqualToString:@" "]) {
[selectedButton setTitle:sender.titleLabel.text forState:UIControlStateNormal];
[selectedButton setTag:button.tag];
return;
}
}
[self checkIfAnswerIsFinished:sender];
}
- (IBAction)clearButton:(id)sender
{
UIButton *button = (UIButton *)[self.view viewWithTag:[sender tag]];
button.hidden = NO;
for (int i = 0; i < _wordButtonsArray.count; i ++) {
if (button == [_wordButtonsArray objectAtIndex:i]) {
[button setTitle:@" " forState:UIControlStateNormal];
for (int letterButtonsIndex = 0; letterButtonsIndex < _letterButtonsArray.count; letterButtonsIndex++) {
UIButton *letterButton = [_letterButtonsArray objectAtIndex:letterButtonsIndex];
if (button.tag == letterButton.tag) {
button.tag = i;
letterButton.hidden = NO;
}
}
}
}
}
Работает как очарование!
Боковое примечание - узнайте об использовании массивов, чтобы вам не нужно было так много переменных и столько блоков 'if/else'. – rmaddy
Thanks Maddy, Сортировка блоков if/else в 1 для цикла. –