Ios5 contentView子视图中的UITableViewCell
我已经创建了带有标签的单元格,并使用了checkaMarksAccessory。最后几个单元格有UITextFields,可以使用modifi进行修改,而那些单元格在uicontrolEventEditingDiEnd上有选择器,我想将单元格的状态更改为选中 如何在选择器中获取单元格?没有对象的父视图吗 我将对象插入单元格的方式Ios5 contentView子视图中的UITableViewCell,ios5,uitableview,subviews,Ios5,Uitableview,Subviews,我已经创建了带有标签的单元格,并使用了checkaMarksAccessory。最后几个单元格有UITextFields,可以使用modifi进行修改,而那些单元格在uicontrolEventEditingDiEnd上有选择器,我想将单元格的状态更改为选中 如何在选择器中获取单元格?没有对象的父视图吗 我将对象插入单元格的方式 UITextField *textfield = [[UITextField alloc] initWithFrame:CGRectMake(10, 25, 2
UITextField *textfield = [[UITextField alloc] initWithFrame:CGRectMake(10, 25, 200, 30)];
[textfield setBorderStyle:UITextBorderStyleRoundedRect];
[textfield addTarget:self action:@selector(vybavaDidFinishEdit:) forControlEvents:UIControlEventEditingDidEnd];
[cell.contentView addSubview:textfield];
好的,方法是使用superview。superview是拥有该对象的组件。如果我想从我使用的UITextField[[UITextField superview]superview]获取uitableview单元格。好的,那么方法就是使用superview。superview是拥有该对象的组件。如果我想从我使用的UITextField[[UITextField superview]superview]获取UITableViewCell.我不确定假设
cell.contentView.superview==cell
是否安全。苹果会改变这一点吗?我对此表示怀疑。但是,我在文档中没有看到任何地方说单元格的内容视图是单元格的直接子视图
如果您已将UIgestureRecognitizer
添加到单元格内容视图的子视图之一,则可以通过以下方式获取对单元格的引用:
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[gestureRecognizer locationInView:self.tableView]];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
以这种方式使用InExpathForRowatPoint:索引
如果必须遍历SuperView,我认为使用下面这样的函数更安全
UITableViewCell *ACMContentViewGetCell(UIView *view)
{
while ((view = view.superview)) {
if ([view isKindOfClass:[UITableViewCell class]]) {
return (UITableViewCell *)view;
}
}
return nil;
}
但该函数仍然假定contentView
位于其单元格中,我在文档中也没有看到该单元格
因此,最好的解决方案可能是重新构建代码,这样您就不需要从contentView
获取cell
,或者如果必须的话,再从contentView
的子视图添加一个实例变量到cell我不确定假设cell.contentView.superview==cell
是否安全。苹果会改变这一点吗?我对此表示怀疑。但是,我在文档中没有看到任何地方说单元格的内容视图是单元格的直接子视图
如果您已将UIgestureRecognitizer
添加到单元格内容视图的子视图之一,则可以通过以下方式获取对单元格的引用:
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[gestureRecognizer locationInView:self.tableView]];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
以这种方式使用InExpathForRowatPoint:
索引
如果必须遍历SuperView,我认为使用下面这样的函数更安全
UITableViewCell *ACMContentViewGetCell(UIView *view)
{
while ((view = view.superview)) {
if ([view isKindOfClass:[UITableViewCell class]]) {
return (UITableViewCell *)view;
}
}
return nil;
}
但该函数仍然假定contentView
位于其单元格中,我在文档中也没有看到该单元格
因此,最好的解决方案可能是重新构建代码,这样您就不需要从contentView
获取cell
,或者如果必须的话,可以从contentView
的子视图向cell
添加一个实例变量