我正在开发一个应用程序。在那里我获得了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 AnyClass
,isKind(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];
}
}
}