Приведение NSString к типу UIButton - PullRequest
0 голосов
/ 28 мая 2011

Я пытаюсь привести строку к типу кнопки. По сути, я перебираю, скажем, 5 кнопок с именами btn1, btn2..btn5. Вот фрагмент:

- (IBAction)replaceImg
{
  UIButton* b;
  for(int i=0; i<5; i++)
    {       
    b = (UIButton*)[NSString stringWithFormat:@"btn%d",i]; //1!
    if([b isHighlighted])
      {
      int imgNo = (arc4random() % 6) + 1;
      UIImage *img = [UIImage imageNamed:[NSStringstringWithFormat:@"%d.png", imgNo]];
      [b setImage:img forState:(UIControlState)UIControlStateNormal];
      }
    }
}

Строка, помеченная 1, создает проблему, если я поменяю ее местами с b = btn1, она отлично работает. Пожалуйста помоги! Я также не смог найти способ доступа к кнопке по ее имени. В UIImage есть что-то вроде imageNamed.

Ответы [ 3 ]

1 голос
/ 28 мая 2011

вы не можете разыграть NSString до UIButton, потому что оба типа совершенно разные.

Используйте tag свойство UIView, чтобы назначить уникальный номер каждому UIButton, и в любой момент вы можете получить к ним доступ, используя viewWithTag .

0 голосов
/ 28 мая 2011

NSString не UIButton, поэтому приведение его к одному не сработает. Ну, это может сработать, если использовать синтаксис , но с точки зрения логики это не удастся. Вы просто не можете взаимодействовать с NSString так же, как с UIButton. Если вам нужно найти свою кнопку по имени, то вы можете либо сохранить указатели на эти кнопки (либо в массиве, на карте, либо просто в виде простых переменных экземпляра, чтобы назвать несколько способов), либо вы можете альтернативно использовать что-то вроде viewWithTag:.

0 голосов
/ 28 мая 2011

Вы не можете «навести» NSString на кнопку. Чтобы получить определенные кнопки или кнопки по имени, зависит от того, как вы их создали. Сохраните созданные вами кнопки в массив, или, если они поступают из NIB, соберите их указатели в массив, а затем переберите массив указателей кнопок. Элементы управления также являются UIViews, поэтому вы можете назначить числовой тег для каждой кнопки в Интерфейсном Разработчике, а затем использовать UIView viewWithTag: метод для поиска определенного представления с определенным тегом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...