我需要显示类似Employee的可编辑字段。
EmpName EmpTitle EmpDOB EmpHobby
假设20名员工。假设所有字段都是可编辑的。
我创建了UIView
并为EmpName ETC添加了所有UITextField
。
我将UIView
添加到cell.contentView
[cell.contentView addSubview:[self displayEmpView]];
这给了我完美的设计,展示了20名员工的重复设计。
现在我的问题是如何访问UITextField
值。 UITextField
位于UIView
,已添加为内容视图。我需要保存更改值。
这可能吗?还是有更好的方法。
答案 0 :(得分:0)
您需要为UITextField
实现委托方法,这些方法将响应所有文本事件。让您的课程符合UITextFieldDelegate
您可以浏览cell.contentView
中的所有子视图,找到属实UITextField
的子视图,然后设置yourTextfield.delegate=self;
保存所有行的数据:
-(IBAction)save{
for(int i=0;i<rowCont;i++){
UITableViewCell *cell = [mytableview cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
for(UITextField *txtField in cell.contentView.subviews){
NSString *text = [txtField text];
//save the value of text
}
}
这可能是一种丑陋的方式,但为了使事情更简单,更清晰,您可以维护一个字典,并在每次完成将值输入文本字段时将textField值附加到字典中。 因此当你移动到另一个textField时,会调用委托方法textFieldDidEndEditing,所以你可以这样做
-(void) textFieldDidEndEditing: (UITextField * ) textField
{
//Store the textField.text in the dictionary here
}
所以最后你会得到一个包含所有20个值的字典,你只需点击按钮就可以保存这个字典到你想要的地方。
答案 1 :(得分:0)
你可以通过
来完成[cell.contentView addSubview:[self displayEmpView]];
displayEmView.tg = indexPath.row+1000;
UITextFiele1.tag = indexPath.row+1001;
依旧......
当你需要使用时:
UIView * displayEmpView = [cell viewWithTag:indexPath.row+1000];
UITexField *txtFieldABC = [displayEmpView viewWithTag:indexPath.row+1001];
但我不想使用它,让我们创建自定义UITableViewCell并为所有UI组件创建一个outLet。