7

私はアプリケーションを開発しています。その中で、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];
    }
}

しかし、私の問題は、そのサブビュー リストからボタンを見つける方法です。これの解き方を教えてください。

4

4 に答える 4

18

このようにすべてのサブビューを反復処理できます。

for (id subview in subviews) {
   if ([subview isKindOfClass:[UIButton class]]) {
      //do your code
   }
}
于 2012-04-19T05:29:13.467 に答える
0

サブビューがis AnyClassisKind(of aClass: AnyClass)または isMember(of 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
    }
}
于 2019-04-19T14:16:49.917 に答える
-2

マーティンの回答の「コードを実行する」部分を拡張するには。サブビューを取得したら、それが正しいボタンかどうかをテストしてから削除したいと思いました。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];
        }
    }

}
于 2013-05-14T22:58:14.270 に答える