将NSString强制转换为UIButton类型

| 我试图将字符串转换为按钮类型。基本上,我会遍历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之类的东西。     
已邀请:
        您不能将
NSString
转换为
UIButton
,因为两者是完全不同的类型。 使用
UIView
的tag属性为每个
UIButton
分配唯一的编号,并且在任何时间点都可以使用viewWithTag访问它们。     
        您不能将NSString“投射”到按钮上。要获取特定的按钮或按名称命名的按钮,取决于您如何创建它们。将创建的按钮存储到数组中,或者如果它们来自NIB,则将其指针收集到数组中,然后遍历按钮指针数组。控件也是UIViews,因此您可以为Interface Builder中的每个按钮分配一个数字\'tag \',然后使用UIView \的viewWithTag:方法搜索具有特定标签的特定视图。     
        
NSString
不是
UIButton
,因此将其强制转换为1不会起作用。好吧,它可能在语法上起作用,但在逻辑上,它将失败。您根本无法像
UIButton
一样与with1互动。如果您需要按名称查找按钮,则可以保留指向这些按钮的指针(在数组,映射中或者作为普通实例变量,以几种方式命名),或者可以使用类似
viewWithTag:
的名称。     

要回复问题请先登录注册