How to check if subview is button or not
我正在开发一个应用程序。在那里我得到了 UITableViewCell.
的所有子视图
这个的代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | (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]; } } |
但我的问题是如何从该子视图列表中找出按钮。请告诉我如何解决这个问题。
你可以像这样遍历所有的子视图。
1 2 3 4 5 | for (id subview in subviews) { if ([subview isKindOfClass:[UIButton class]]) { //do your code } } |
斯威夫特
1 2 3 4 5 | for subview in view.subviews { if subview is UIButton { // this is a button } } |
检查子视图是否为带有
使用 is-
1 2 3 4 5 | for subview in self.view.subviews{ if subview is UIButton{ //do whatever you want } } |
使用 isMember(of:)-
1 2 3 4 5 | for subview in self.view.subviews{ if subview.isMember(of: UIButton.self){ //do whatever you want } } |
使用 isKind(of:)-
1 2 3 4 5 | for subview in self.view.subviews{ if subview.isKind(of: UIButton.self){ //do whatever you want } } |
扩展 Martin 的回答中的"做你的代码"部分。获得子视图后,我想测试它是否是正确的按钮,然后将其删除。我无法使用 subview.titleLabel 直接检查按钮的 titleLabel 所以我将子视图分配给 UIButton 然后检查按钮的 titleLabel.
1 2 3 4 5 6 7 8 9 10 | - (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]; } } } |