在UITableViewCell iOS7中搜索超级视图

时间:2013-09-26 08:39:35

标签: ios uitableview ios7

我有一个名为UItableViewCell的自定义EditableTableViewCell类,除了其他内容之外,其UITextField内部添加了contentView。在Textfield委托方法中,我试图检测它属于哪个部分。像这样:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    UIView* contentView =[textField superview];
    //traverse up in the view hierarchy until we find the cell's content view.
    while (![contentView isKindOfClass:[EditableTableViewCell class]] || contentView.superview == nil) {
        contentView = [contentView superview];
    }
    EditableTableViewCell *thiscell = (EditableTableViewCell*)contentView;
    NSIndexPath *indexpath =[[self tableView]indexPathForRowAtPoint:thiscell.center];

这给了我正确的结果,我看到了类似的解决方案 here也可以导航视图层次结构。我想知道这是否是唯一的解决方案,或者是否有更合适的东西不涉及所有可用单元的循环。

2 个答案:

答案 0 :(得分:5)

试试这个,不需要循环浏览视图

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    UIView* contentView =[textField superview];
    CGPoint center = [self.tableView convertPoint:textField.center fromView:contentView];
    NSIndexPath *indexpath =[[self tableView] indexPathForRowAtPoint:center];
    NSLog(@"indexPath:%@", indexpath);
}

答案 1 :(得分:0)

为什么不

NSIndexPath *indexpath = [(UITableView*)self.superview indexPathForCell:self]