【问题标题】:Why does a UIRoundedRectButton not respond yes to isKindOfClass:[UIButton class]?为什么 UIRoundedRectButton 不响应 isKindOfClass:[UIButton class]?
【发布时间】:2013-01-24 10:01:31
【问题描述】:

我在创建的视图中有一个UIButton

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(500, 100, 100, 44);
[self.view addsubview:btn];

当我像这样遍历视图层次结构时:

for (id view in self.view.subviews) 
{        
    NSLog(@"%@",NSStringFromClass([view class]));
    if ([view isKindOfClass:[UIButton class]]) 
    {
        //dsnt get here
        UIButton *btn = view;
    }
}

控制永远不会进入 if 块。

NSLog(@"%@", NSStringFromClass([view class])); 打印“UIRoundedRectButton”。如何检查班级是否为UIButton

UIButton *btn = [[UIButton alloc] init]; 给出了想要的结果,但我以后无法设置按钮类型。

【问题讨论】:

  • 您是否已将按钮添加到您的视图中? [self.view addSubView:btn]; ?
  • 这似乎是一件很奇怪的事情。你想用这段代码做什么?
  • 试试[view isMemberOfClass:[UIButton class]]; 我发现如果一个不工作,另一个工作完美

标签: objective-c cocoa-touch uibutton


【解决方案1】:

我最终为您编写了这个示例......它完美无缺......

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
myButton.frame = CGRectMake(100, 100, 160, 50);
[myButton setTitle:@"click me" forState:UIControlStateNormal];
[self.view addSubview:myButton];

for (id view in self.view.subviews)
{

    NSLog(@"%@",NSStringFromClass([view class]));

    if ([view isKindOfClass:[UIButton class]])

    {
        //dsnt get here
        UIButton *btn = view;
    }
}

【讨论】:

    【解决方案2】:
    for (UIButton *btnNew in self.view.subviews) 
    {        
        NSLog(@"%@",NSStringFromClass([btnNew class]));
        if ([btnNew isKindOfClass:[UIButton class]]) 
        {
         //dsnt get here
         UIButton *btn = btnNew;
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-16
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 2012-08-03
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多