【发布时间】:2014-01-28 14:10:41
【问题描述】:
在我的应用程序中,我有一个登录表单,用户在其中输入一个字段密码。所以我在cellForRowAtIndexPath 的函数调用期间在UITableViewCell 中添加了UITextField 的子视图。
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"loginViewCell"];
UITextField *editableTextField = nil;
// Done Some settings of editableTextField
// Adding Subview
[cell addSubview:editableTextField];
当用户按下登录按钮时,我调用了一个选择器函数名登录
UITableViewCell *cell = [loginTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
// 然后我遍历cell 的subviews 并从UITextField 子视图中提取用户输入的密码。
for (UIView *view in cell.subviews) {
if ([view isKindOfClass:[UITextField class]]) {
usernameField = (UITextField *)view;
break;
}
}
在IOS 7 之前一直运行良好
在网上搜索后,我发现IOS 7 Apple 更改了UITableViewCell 的视图层次结构,现在插入了额外的类UITableViewCellScrollView。
我在我的选择器函数登录中调试我的代码,它得到了与我添加subview相同的单元格我打印cell.subview的名称显示UITableViewCellScrollView,之前它显示UITableViewCellcontentView(在@之前987654338@)
如何从UITableViewCell 的subeview 中提取密码?
【问题讨论】:
-
确保将子视图添加到单元格的 contentView 而不是单元格本身。
-
如果不想继承 UITableView 单元格,可以通过标签引用子视图。设置 UITextField 实例的标签并添加它,然后您可以稍后通过以下方式引用它: UITextField * tf = [cell.contentView viewWithTag:1];
标签: ios iphone uitableview ios7 uitextfield