循环遍历具有特定标记号的所有UITextView

时间:2015-03-06 08:17:19

标签: ios objective-c uitableview for-loop custom-cell

我在自定义UITextFields中有一堆UITableViewCell具有相同的标记号。我试图制作一个for循环来迭代所有带有特定标记号的textFields

这是我的代码:

for (UItextField *textField in [cell.contentView viewWithTag:8] {
    ... // Perform some code
}

当我这样做时,我会收到警告:[cell.contentView view...]说:

Collection expression type 'UIView *' may not respond to 'countByEnumeratingWithState:objects.count'

我可以写什么而不是[cell.contentView.view view...]

3 个答案:

答案 0 :(得分:3)

执行viewWithTag:时,它将返回单个UIView对象,但对于具有相同标记号的视图效果不佳。因此,它会返回标记为UIVeiw的第一个8,因此我们要做的是循环遍历该视图中的所有子视图。然后检查它是否为UITextField且标记等于8if statement的原因是,即使我们将对象类型从UITextField更改为{{1},也无法保证循环中的对象返回将是id。我们仍然无法保证它实际上是UITextField所以我们需要UITextField

if statement

答案 1 :(得分:2)

此代码:[cell.contentView viewWithTag:8]返回单个视图,而不是文档中指定的数组:viewWithTag:

如果您希望获得具有相同标记的所有视图,则使用KVC:

NSArray *filteredViews = [containerView.subviews filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF.tag == %d", 8]]
for (UIView *view in filteredViews) {
    if ([view isKindOfClass:[UITextField class]) {
    //do something with the view
    }
}

答案 2 :(得分:1)

for (UITextField *textfield in viewThatContainTheTextfields.subviews) {

         if (textfield.tag == 8) {

         }


}