如何检查子视图是否为按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查子视图是否为按钮相关的知识,希望对你有一定的参考价值。

我正在开发一个应用程序。在那里我获得了UITableViewCell的所有子视图。

这个代码是:

    (void)listSubviewsOfView:(UIView *)view {

    // Get the subviews of the view
         NSArray *subviews = [view subviews];

    // Return if there are no subviews
    if ([subviews count] == 0) return;

    for (UIView *subview in subviews) {

        NSLog(@"%@", subview);

        // List the subviews of subview
        [self listSubviewsOfView:subview];
    }
}

但我的问题是如何找出该子视图列表中的按钮。请告诉我如何解决这个问题。

答案

您可以遍历所有这样的子视图。

for (id subview in subviews) {
   if ([subview isKindOfClass:[UIButton class]]) {
      //do your code
   }
}
另一答案

迅速

for subview in view.subviews {
    if subview is UIButton {
        // this is a button
    }
}
另一答案

检查子视图是否是带有is AnyClassisKind(of aClass: AnyClass)或isMember(aClass:AnyClass)API的按钮。

使用是 -

for subview in self.view.subviews{
      if subview is UIButton{
            //do whatever you want
      }
}

使用isMember(of :) -

for subview in self.view.subviews{
     if subview.isMember(of: UIButton.self){
          //do whatever you want
     }
}

使用isKind(of :) -

for subview in self.view.subviews{
    if subview.isKind(of: UIButton.self){
        //do whatever you want
    }
}
另一答案

扩展Martin的答案中的“做你的代码”部分。一旦我得到子视图,我想测试它是否是正确的按钮,然后将其删除。我无法使用subview.titleLabel直接检查按钮的titleLabel,因此我将子视图分配给UIButton,然后检查按钮的titleLabel。

- (void)removeCheckboxes {

    for ( id subview in self.parentView.subviews ) {
        if ( [subview isKindOfClass:[UIButton class]] ) {
            UIButton *checkboxButton = subview;
            if ( [checkboxButton.titleLabel.text isEqualToString:@"checkBoxR1C1"] )    [subview removeFromSuperview];
        }
    }

}

以上是关于如何检查子视图是否为按钮的主要内容,如果未能解决你的问题,请参考以下文章

切换片段时如何维护子视图的状态?

片段之间的共享数据(父列表视图和子列表视图)

如何将图像视图从改造加载的片段传递给子片段?

如何禁用子视图上的 IBAction 按钮

如何检查 Recyclerview 是不是为空

如何移动界面生成器放置的文本字段和按钮